这个Python程序可以简化或编写得更好吗?

2024-05-19 02:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,在过去的两三天里,我已经学了不少Python,我决定利用我的知识创造一些简单的,但有点娱乐性的东西,所以我创造了一个猜谜游戏。在

大约30分钟后,创建了这个程序,并使它100%的工作,我想知道是否有什么我可以做得更好,等等。我想确保我从任何错误中吸取教训,所以我感谢它!在

代码如下:

import random

def guessingGame():

    randomNumber = random.randrange(1, 10)
    yourGuess = int(input("Take A Guess, Numbers 1 Through 10: "))

    while yourGuess != randomNumber:
        print("DOH! You Did Not Guess Right, TRY AGAIN")
        yourGuess = int(input("Take A Guess, Numbers 1 Through 10: "))
    else:
        if yourGuess == randomNumber:
            print("Congrats You Beat The Guess Game!")

playGame = input("Would You Like To Play The Guessing Game (Y/N): ")

if playGame == "Y" or playGame == "y":
    print("Okay Lets Play!")
    guessingGame()

elif playGame == "N" or playGame == "n":
    print("Okay Thanks Anyways!")
    break

再次感谢!在


Tags: theyouinputifrandomintprinttake
3条回答
from random import randint

def getInt(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("That's no integer!")

def play():
    secret = randint(1,10)
    while True:
        guess = getInt("Take a guess (1-10):")
        if guess==secret:
            print("Congrats, you beat The Guess Game!")
            break
        else:
            print("D'oh! You guessed wrong. Try again!")

def main():
    while True:
        inp = input("Would you like to play The Guessing Game? (Y/N)").lower()
        if inp=="y":
            print("Okay, let's play!")
            play()
        elif inp=="n":
            print("Alright. Thanks anyways!")
            break
        else:
            print("You don't follow directions too good, eh?")

if __name__=="__main__":
    main()

我注意到了一些事情:

  • 你应该处理这样的情况:用户试图猜测一些看起来不像数字的东西,比如说字母“a”。在
  • Python风格指南说,对于变量名,最好使用带下划线的较低的_,而不是CamelCase。在
  • yourGuess = int(input("Take A Guess, Numbers 1 Through 10: "))是不必要的重复,请参阅下面的一种重构该部分的可能方法。在

一般清理:

import random

def guessing_game():
  random_number = random.randint(1, 10)
  assert random_number in range(1, 11)
  your_guess = None
  while your_guess != random_number:
    try:
      your_guess = int(input("Take A Guess, Numbers 1 Through 10: "))
    except ValueError:
      print("That wasn't a number")
      continue

    if your_guess != random_number:
      print("DOH! You Did Not Guess Right, TRY AGAIN")
    else:
      print("Congrats You Beat The Guess Game!")
      break

play_game = None
while play_game not in ['y', 'n']:
  play_game = input("Would You Like To Play The Guessing Game (Y/N): ").lower()

if play_game == "y":
  print("Okay Lets Play!")
  guessing_game()
else:
  assert play_game == "n":
  print("Okay Thanks Anyways!")

而不是

if playGame == "Y" or playGame == "y":
    print("Okay Lets Play!")
    guessingGame()

我有点喜欢

^{pr2}$

我更喜欢:

def quit():
    print("Okay Thanks Anyways!")


actions = {"y": guessingGame}
actions.get(playGame.lower(), quit)()

相关问题 更多 >

    热门问题