Python 关于如何改进此猜测数字游戏代码的提示
我尝试了很多方法来改进它,但是作为一个初学者,我只能通过下面的代码来达到效果。另外,我注意到,如果我在通过while验证后键入一个非整数值,它会中断程序。。。如果您能给我一些关于如何改进代码的建议,我将不胜感激。多谢各位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
# 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,我会研究它的!谢谢!此外,您还可以使用较小的代码使其工作!