Python 关于如何改进此猜测数字游戏代码的提示

Python 关于如何改进此猜测数字游戏代码的提示,python,python-3.x,Python,Python 3.x,我尝试了很多方法来改进它,但是作为一个初学者,我只能通过下面的代码来达到效果。另外,我注意到,如果我在通过while验证后键入一个非整数值,它会中断程序。。。如果您能给我一些关于如何改进代码的建议,我将不胜感激。多谢各位 # Generates a cryptographically secure number import secrets # SystemRandom instance from secrets module number_generator = secrets.System

我尝试了很多方法来改进它,但是作为一个初学者,我只能通过下面的代码来达到效果。另外,我注意到,如果我在通过while验证后键入一个非整数值,它会中断程序。。。如果您能给我一些关于如何改进代码的建议,我将不胜感激。多谢各位

# Generates a cryptographically secure number
import secrets

# SystemRandom instance from secrets module
number_generator = secrets.SystemRandom()

number = number_generator.randint(1, 10)

# The following code is used to print the generated number: print("The random number is", number)

print('Please, guess a number between 1 and 10')

# Asks the user for input and checks if it is an integer number
while True:
    user_number = input('Your number is: ')
    try:
        user_number = int(user_number)
        break
    except ValueError:
        print('Please, input only integer numbers between 1 and 10!')
        continue

while number != user_number:
    print('Please, select another number!')
    user_number = int(input())
    if user_number > number:
        print('Too high!')
    elif user_number < number:
        print('Too low!')
    else:
        print('Awesome! The number is correct!')
        break
#生成加密安全号码
输入秘密
#来自机密模块的SystemRandom实例
数字\u生成器=secrets.SystemRandom()
number=number\u生成器randint(1,10)
#以下代码用于打印生成的数字:打印(“随机数为”,数字)
打印('请猜一个介于1和10'之间的数字)
#要求用户输入并检查它是否为整数
尽管如此:
user_number=input('您的号码是:')
尝试:
用户号=整数(用户号)
打破
除值错误外:
打印('请只输入1到10之间的整数!')
持续
而数字!=用户号码:
打印('请选择其他号码!')
user_number=int(输入())
如果用户编号>编号:
打印('太高!')
elif用户编号<编号:
打印('太低!')
其他:
打印('太棒了!数字正确!')
打破
1)在第二个循环中,您没有验证输入,这就解释了如果输入不是int,它为什么会失败

2) 您要求的数字介于1和10之间,但您没有验证它是否在该范围内

这适用于这两个变化:

while True:
    try:
        user_number = int(input('Your number is: '))
        if 10 >= user_number >= 1:
            break
        print('Please, input only integer numbers between 1 and 10!')
    except ValueError:
        print('Please, input only integer numbers between 1 and 10!')

while number != user_number:
    try:
        user_number = int(input('Please, select another number!'))
        if not 10 >= user_number >= 1:
            print('Please, input only integer numbers between 1 and 10!')
            continue        
    except ValueError:
        print('Please, input only integer numbers between 1 and 10!')
        continue
    if user_number > number:
        print('Too high!')
    elif user_number < number:
        print('Too low!')
    else:
        print('Awesome! The number is correct!')
        break
为True时:
尝试:
user_number=int(输入('您的号码是:'))
如果10>=用户号>=1:
打破
打印('请只输入1到10之间的整数!')
除值错误外:
打印('请只输入1到10之间的整数!')
而数字!=用户号码:
尝试:
user_number=int(输入('请选择另一个数字!'))
如果不是10>=用户号>=1:
打印('请只输入1到10之间的整数!')
持续
除值错误外:
打印('请只输入1到10之间的整数!')
持续
如果用户编号>编号:
打印('太高!')
elif用户编号<编号:
打印('太低!')
其他:
打印('太棒了!数字正确!')
打破

如果您编写一个验证输入的函数,那么它可能会更好、更简短,因此不会同时在两个循环中编写,但因为我不知道您是否已经在使用UDF,所以我没有使用它。

这是我几天前编写的代码

import random

def _input(message, type=int):
    while True:
        try:
            return type(input(message))
        except:
            print("Please enter valid" , type.__name__)

n = random.randint(1,99)

print("Computer has selected a number")
guess = _input("Enter your guess: ")

while 1:
    if n < int(guess):
        print("\nGuess is bigger than number")
        guess = _input("Enter your guess again: ")
    elif n > int(guess):
        print("\nGuess is smaller than number")
        guess = _input("Enter your guess again: ")
    else:
        print("\nThats correct!!!")
        break
随机导入
def_输入(消息,类型=int):
尽管如此:
尝试:
返回类型(输入(消息))
除:
打印(“请输入有效”,键入名称)
n=random.randint(1,99)
打印(“计算机已选择一个数字”)
猜测=\输入(“输入您的猜测:”)
而1:
如果nint(猜测):
打印(“\n空格小于数字”)
猜测=\输入(“再次输入猜测:”)
其他:
打印(“\n正确!!!”)
打破
我做了一个函数来检查输入的数字是否为int。 在函数中,我创建了一个try-catch块来处理由于输入字符串而导致的错误。 如果您无法理解代码中的某些内容,请告诉我

#生成一个加密安全的数字
# Generates a cryptographically secure number
import random
number = random.randint(1, 10)

print('Please, guess a number between 1 and 10')

# Asks the user for input and checks if it is an integer number

def func():
    while True:

        user_number = input('Your number is: ')
        try:
            user_number = int(user_number)
            if 10 <= user_number <= 1:
                print('Please, input only integer numbers between 1 and 10!')
                continue
        except ValueError:
            print('Please, input only integer numbers between 1 and 10!')
            continue

        while number != user_number:
            print('Please, select another number!')
            user_number = int(input())
            if user_number > number:
                print('Too high!')
            elif user_number < number:
                print('Too low!')
            else:
                print('Awesome! The number is correct!')
                return

func()
随机输入 number=random.randint(1,10) 打印('请猜一个介于1和10'之间的数字) #要求用户输入并检查它是否为整数 def func(): 尽管如此: user_number=input('您的号码是:') 尝试: 用户号=整数(用户号)
如果10在我看来不错,你是在寻找一个较短的版本,你可以结合你的两个while语句!谢谢不幸的是,它不起作用。我在使用您的代码输入时也遇到同样的错误…
random.randint()
不会生成加密安全的数字。OP导入了
秘密
,确实如此。非常感谢!现在代码工作得很好!直到现在我才知道UDF,我会研究它的!谢谢!此外,您还可以使用较小的代码使其工作!