这是我第一次使用stackoverflow进行访问-我是编程新手,并且正在学习Python入门课程。激动起来!
我们的第二个任务要求我们创建著名的Guess the Number Game。对于那些已经了解此游戏的人,我希望在添加的游戏中有所帮助:我们必须按顺序列出每个猜测。示例输出应如下所示:
我正在考虑一个整数,您有三个猜测。
猜测1:请输入1到10之间的整数:4
你的猜测太小了。
猜想2:请输入1到10之间的整数:8
你的猜测太大了。
猜想3:请输入1到10之间的整数:7
太糟糕了。该号码是:5
我已经将编码压缩到出现Guess 1和Guess 3的位置,但是我无法使Guess 2出现。我一直在努力工作并替换每个“ while”,“ if”,“ elif”和“ else”命令来解决此问题,但似乎无法提出解决方案!到目前为止,这是我的代码:
def guess():
print ("I'm thinking of an integer, you have three guesses.")
attempts = 0
from random import randint
number = randint(0,10)
guess = eval(input("Guess 1: Please enter an integer between 1 and 10: "))
while guess != number and attempts == 0:
if guess < number:
print("Your guess is too small.")
break
if guess > number:
print("Your guess is too big.")
break
elif guess == number:
print("You got it!")
attempts = attempts + 1
if number != guess and attempts == 1:
guess = eval(input("Guess 2: Please enter an integer between 1 and 10: "))
if guess < number:
print("Your guess is too small.")
elif guess > number:
print("Your guess is too big.")
while guess == number:
print("You got it!")
attempts = attempts + 1
elif number != guess and attempts == 2:
guess = eval(input("Guess 3: Please enter an integer between 1 and 10: "))
if guess < number:
print("Too bad. The number is: ", number)
elif guess > number:
print("Too bad. The number is: ", number)
while guess == number:
print("You got it!")
此代码输出Guess 1,然后退出。谁能帮我弄清楚如何使Guess 2和3出现?欢迎所有想法-谢谢!
最佳答案
您可以大大缩短代码的长度,只需在循环中移动输入,并使用range或用户正确猜出的三个尝试继续循环:
def guess():
print ("I'm thinking of an integer, you have three guesses.")
from random import randint
number = randint(0,10)
# loop three times to give at most three attempts
for attempt in range(3):
# cast to int, don't use eval
guess = int(input("Guess 1: Please enter an integer between 1 and 10: "))
if guess < number:
print("Your guess is too small.")
elif guess > number:
print("Your guess is too big.")
else: # not higher or lower so must be the number
print("You got it!")
break
最好与try/except一起使用一段时间来验证用户输入数字,然后循环播放直到用户正确使用了3次尝试或猜测:
def guess():
print ("I'm thinking of an integer, you have three guesses.")
attempts = 0
from random import randint
number = randint(0,10)
while attempts < 3:
try:
guess =int(input("Guess 1: Please enter an integer between 1 and 10: "))
except ValueError:
print("That is not a number")
continue
if guess < number:
print("Your guess is too small.")
attempts += 1
elif guess > number:
print("Your guess is too big.")
attempts += 1
else: # if it is a number and not too high or low it must be correct
print("You got it!")
break # break the loop
如果您确实想向用户提供有关他们的猜测是太低还是太高的反馈,则不能仅使用
if/else
。也如所评论不要使用eval。概述here的一些充分理由
关于python - 猜猜具有不同猜名字的数字游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28149775/