我创造了一款名为“猜谜游戏”的游戏。故事是:计算机生成一个数字,用户有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
猜测时添加了“您没有更多选择权”的代码,我也会喜欢。
答案 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