繁体   English   中英

这个Python程序可以简化还是更好地编写?

[英]Could This Python Program Be Simplified Or Better Written?

好的,在过去的两三天内,我已经学习了很多Python,并且我决定利用自己的知识并创建一些简单但有趣的东西,因此我创建了一个Guessing Game。

创建此程序并使它100%正常运行约30分钟后,我想知道是否有什么可以做得更好的方法,等等。我想确保我从任何错误中学习,因此,我感激不尽!

所以这是代码:

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

再次感谢!

代替

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

我有点喜欢

if playGame.lower() == "y":
    # ...

我什至更喜欢:

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


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

我注意到了几件事:

  • 您应该处理用户试图猜测看起来不像数字的东西的情况,例如说字母“ a”。
  • Python样式指南说变量名称比CamelCase更喜欢lower_with_underscores。
  • 不必要地重复了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!")
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()

我想您可以在while循环中使用“ break”语句,例如

import random

def guessingGame():    
    randomNumber = random.randrange(1, 10)

    while True:

        yourGuess = input("Take A Guess, Numbers 1 Through 10: ")

        if !yourGuess.isdigit():
            print ("That's not a number!")
        elif int(yourGuess) not in range(1,10):
            print("I said between 1 and 10!")
        elif int(yourGuess) != randomNumber:
            print("DOH! You Did Not Guess Right, TRY AGAIN")
        else:
            break

    print("Congrats You Beat The Guess Game!")

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

if playGame.lower() == "y":
    print("Okay Lets Play!")
    guessingGame()

elif playGame.lower() == "n":
    print("Okay Thanks Anyways!")
    break

阅读有关命名约定和Python编码风格的Pep 8文档。

import random

def guessing_game(x=1, y=10):
    """
    A simple number guessing game.
    """
    while int(input("Take A Guess, Numbers 1 Through 10: ")) \
                                          != random.randrange(x, y):
        print("DOH! You Did Not Guess Right, TRY AGAIN")

    print("Congrats You Beat The Guess Game!")

    if input("Would You Like To Play The Guessing Game (Y/N): ") == 'Y':
        print("Okay Lets Play!")
        guessing_game()
    else:
        print("Okay Thanks Anyways!")

if __name__ == '__main__':
    guessing_game(1, 10)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM