我在Codecademy上学习Python,我应该在显示“你输了”之前给用户3个猜测。我认为我的代码允许3个条目,但网站显示“哎呀,再试一次!你是否允许用户3猜测,或者你错误地检测到正确的猜测?”除非用户在3次试验中猜对了。有人能告诉我什么是错的吗?
from random import randrange
random_number = randrange(1, 10)
count = 0
# Start your game!
guess= int(raw_input("Please type your number here:"))
while count < 2:
if guess==random_number:
print "You win!"
break
else:
guess=int(raw_input("Please guess again:"))
count+=1
else:
print "You lose!"
print random_number
答案 0 :(得分:3)
您的循环确实会要求用户进行三次猜测。 (正如运行代码 - 可以轻易地看到那些其他答案告诉你改变循环条件,这是错误的解决方案。)
你的循环问题是一个更微妙的问题:因为它的结构方式,第三个猜测从未测试过!您可以通过将random_number
设置为常量并猜测错误两次,然后在最后一次尝试中找到错误来查看此信息。你还是输了。
最好的办法是使用更简单的循环结构,在循环的同一次迭代中进行询问和检查。
for attempt in xrange(3):
guess = int(raw_input("Please enter a number: "))
if guess == random_number:
print "You win!"
break
print "Wrong! Try again."
else:
print "You lose! The number was", random_number
如果您想在第二次和随后的猜测中提供不同的提示,请尝试以下方法:
prompt = "Please enter a number"
for attempt in xrange(3):
guess = int(raw_input(prompt + ": "))
if guess == random_number:
print "You win!"
break
prompt = "Wrong! Try again"
else:
print "You lose! The number was", random_number
答案 1 :(得分:2)
您需要while count <= 2
。你的计数从0开始。然后它通过你的循环体一次。然后它增加到1.然后它再次通过你的循环体。最后,一旦它增加到2,你的while
条件的计算结果为false,并且循环体不会第三次执行。
在设置条件时要小心角落情况。 :)
答案 2 :(得分:1)
条件应该是:
while count < 3:
为了便于理解,我建议您在count = 1
中启动计数器并写下这样的条件:
while count <= 3:
现在更清楚的是,允许正好重复3次。但是,让我们看看你的代码错误的原因:
count
从0
开始,0 < 2
确实如此,所以我们进入循环count
会增加到1
,1 < 2
也是如此,所以我们再次进入循环count
会增加到2
,而2 < 2
不再是{{1}},所以我们退出循环所以你看,只考虑了两次尝试。