簡體   English   中英

如何使程序在循環代碼處跟蹤用戶輸入?

[英]How do I make the program track user inputs at the loop code?

我創建了一個名為“猜謎游戲”的游戲。 故事是:計算機生成一個數字,用戶有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猜測時,它說“您別無選擇”,我也很喜歡。

首先,將prevanswer = None的設置prevanswer = None循環之前。 否則,您將抹去以前的記憶。

其次,看看您的if / elsif代碼序列。 您具有正確的測試,但順序錯誤:

elif answer < number:

這將執行每一次小於數字的答案。 在其下方,您具有:

elif answer < number and answer > prevanswer:

從某種意義上說,這應該是“不錯”的代碼,它可以完成您似乎想要的工作。 但這比以前的案例更為受限制。 也就是說,每當回答<數字時,只有SOMETIMES會回答> prevanswer。 因此,在所有答案<數字的一般情況之前,您應該檢查可能性的子集。

嘗試這個:

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

最后,不要設定

prevanswer = i

反而

prevanswer = answer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM