【问题标题】:How do I make the program track user inputs at the loop code?如何让程序在循环代码处跟踪用户输入?
【发布时间】:2016-05-01 04:07:48
【问题描述】:

我创建了一个名为“猜谜游戏”的游戏。故事是:计算机生成一个数字,用户有 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 猜测时,它会显示“您别无选择”。

【问题讨论】:

  • 你的尝试都没有意义,我希望你能看到......

标签: python loops


【解决方案1】:

首先,将prevanswer = None 的设置移到循环之前。否则,您将抹去之前发生的事情的记忆。

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

elif answer < number:

这将执行 EVERY TIME answer is less than number。低于你有:

elif answer < number and answer > prevanswer:

这是“好”的代码,从某种意义上说,它应该完成你想要的。但这是一个比前一个更受限制的案例。也就是说,每当 answer prevanswer。因此,您应该在所有答案

试试这个:

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

最后,不要设置

prevanswer = i

而是

prevanswer = answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多