如何使程序跟踪循环代码中的用户输入?

时间:2016-01-24 22:56:24

标签: python loops

我创造了一款名为“猜谜游戏”的游戏。故事是:计算机生成一个数字,用户有3次机会猜测计算机生成的数字。这很好,很容易编码,但我想在那里添加一个小细节,那就是我遇到问题的地方。

我要求你们提供帮助,告诉我们如何在代码中添加内容,以便将新输入与前一个输入相关联,并根据这一点计算打印响应。

import random

listte = range(1, 21) # list contains 1-20
number = random.choice(listte) # computer generated number from the list

for i in range(3):
    answer = int(input("What is your guess?"))
    prevanswer = None # I came up with this but not really working?
    if answer == number:
        print "OH YEAH you got it!"
    elif answer < number:
        print "make it higher"
    # this elif is not working with below codes
    elif answer < number and answer > prevanswer:
        print "still higher"
    elif answer > number:
        print "lower!"
    prevanswer = i # also not working but this is what I came up with

示例执行方案:

computer generated : 15

guess 1 : 17
prints "lower!"

guess 2: 10
print "make it higher"

guess 3: 12
print "still higher" 

额外:如果您在用户使用了所有3猜测时添加了“您没有更多选择权”的代码,我也会喜欢。

1 个答案:

答案 0 :(得分:2)

首先,将prevanswer = None的设置移到循环之前。否则,你就会抹掉以前的记忆。

其次,看看你的if / elsif代码序列。你有正确的测试,但顺序错误:

elif answer < number:

这将执行每个时间答案小于数字。在下面你有:

elif answer < number and answer > prevanswer:

这是好的&#34;代码,从某种意义上说它应该完成你想要的东西。但这是一个比前一个更受限制的案例。也就是说,每当答案&lt;号码,只有SOMETIMES会回答&gt; prevanswer。所以你应该在所有答案的一般情况之前检查可能性的子集&lt;号。

试试这个:

elif answer < number and answer > prevanswer:  # specific case
    ...
elif answer < number: # general case

最后,不要设置

prevanswer = i

而是

prevanswer = answer