首页 > 解决方案 > 我该如何改进呢?

问题描述

我目前正在自学 Python,这是我的第一个程序。我正在做一些简单的项目,所以我可以改进。想听听对此的反馈。

import random

print("There is a number between 1 and 100 guess it and you will win a price : ")


def guess():
    # A simple guess game.
    random_number = random.randint(1, 5)
    flag = True
    user_guess = []

    while flag:

        user_number = input("Enter the number : ")

        user_guess.append(user_number)

        if int(user_number) < random_number:
            print("You have to go higher")

        elif int(user_number) > random_number:
            print("You have to go lower ")

        else:
            flag = False
            print("Congrats you win !!! \nThe numbers of guesses before you won : ")
            print(len(user_guess))


guess()

while True:
    play_again = input("Do you like to play again ? : (y/n): ")
    if play_again == 'y':
        guess()
    else:
        print("Thank you for playing have a nice day!!! ")
        break

标签: python

解决方案


  1. 如果用户输入无效(非数字)字符,您的程序将抛出异​​常。使用isdigit来避免这种情况。
  2. user_number每次您想将其与其他整数进行比较时转换为整数是昂贵且轻率的。将其转换一次并重新分配给user_number.
  3. flag没有必要。使用while True, 并在需要时中断。
  4. 保留整个list对象只是为了计算用户输入有点矫枉过正。有一个整数(count在我的例子中)并使用它。
  5. 您打印“介于 1 和 100 之间”,但您的程序会创建一个介于 1 和 5 之间的随机整数。我不确定您这样做的意图(可能是调试帮助),但我认为这是一个小错误。
  6. 一个小建议,将 移至print("There is a number between 1 and 100 guess it and you will win a price : ")函数guess,因为函数声明自己的目的更有意义。

以下是我对guess函数进行这些更改的方法:

def guess():
    print("There is a number between 1 and 100 guess it and you will win a price : ")
    # A simple guess game.
    random_number = random.randint(1, 100)
    # flag = True obsolete
    count = 0
    while True:
        user_number = input("Enter the number : ")
        if (user_number.isdigit()):
          user_number = int(user_number)
        else:
          print("Invalid:")
          continue
        count += 1
        if user_number < random_number:
            print("You have to go higher")
        elif user_number > random_number:
            print("You have to go lower ")
        else:
            print("Congrats you win !!! \nThe numbers of guesses before you won : ")
            print(count)
            break

推荐阅读