2017-02-19 61 views
0

我正在學習Python的介紹,並遇到了一個問題。猜猜數字遊戲給出的答案太快

請看看我的腳本:

import random 
secretNumber = random.randint(1,20) 
print (' I am thinking of a number between 1 and 20.') 

#ask the player to guess 6 times. 
for guessesTaken in range (1,7): 
    print ('take a guess.') 
    guess = int(input()) 

    if guess < secretNumber: 
     print ('your guess is too low') 
    elif guess > secretNumber: 
     print ('your guess is too high') 
    else: 
     break 

    if guess == secretNumber: 
     print ('good job! you guessed my number in ' + str(guessesTaken) + ' guesses!') 
    else: 
     print ('nope. the number i was thinking of was ' + str(secretNumber)) 

我試圖做的猜測非數字遊戲。當我運行該腳本,它問我:

  1. 猜數字

  2. 當我在數字輸入,它會自動給我它存儲的,而不是給我6次嘗試我的號碼。

如果我在任何步驟都不清楚,請告訴我,下次我會盡全力回答更清晰的問題!

回答

0

if guess == secretNumber:開頭的最後一部分是循環的一部分,但您不希望在循環中給出最終結果。相反,把它在循環後(外的話),這意味着你應該減少這4行代碼的縮進:

import random 
secretNumber = random.randint(1,20) 
print (' I am thinking of a number between 1 and 20.') 

#ask the player to guess 6 times. 
for guessesTaken in range (1,7): 
    print ('take a guess.') 
    guess = int(input()) 

    if guess < secretNumber: 
     print ('your guess is too low') 
    elif guess > secretNumber: 
     print ('your guess is too high') 
    else: 
     break 

if guess == secretNumber: 
    print ('good job! you guessed my number in ' + str(guessesTaken) + ' guesses!') 
else: 
    print ('nope. the number i was thinking of was ' + str(secretNumber)) 
+0

嗨trincot!首先,感謝你的空間。正在進行更改,當我點擊提交時,它說你已經完成了!謝謝,我明白這是如何工作的。其次,我像你說的那樣把它拿出來,它起作用了!沒有注意到。非常感謝! – user3003923

+0

不客氣:-) – trincot

0

最簡單的解決方法是,上面已經爲說明,只需將最後的if語句跳出循環。你使用的語法(除了那個錯誤的縮進)非常好,這是python的一個很好的開始。然而,在python 3中,你不需要在循環內部的if語句中使用其他語言。從根本上說,因爲如果滿足ELSE條件,你不需要做任何事情,你可以把它拿出來。

+0

我新來堆棧溢出,所以即時通訊只是儘量回答儘可能多的問題。對重複抱歉! – 2017-02-19 18:19:07