我允许3次猜测还是2次?

时间:2013-09-27 22:33:36

标签: python

我在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

3 个答案:

答案 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次。但是,让我们看看你的代码错误的原因:

  • count0开始,0 < 2确实如此,所以我们进入循环
  • 在第一次尝试失败时,count会增加到11 < 2也是如此,所以我们再次进入循环
  • 在第二次尝试失败时,count会增加到2,而2 < 2不再是{{1}},所以我们退出循环

所以你看,只考虑了两次尝试。