2015-08-22 18 views
0

我完全新的節目。我開始使用最簡單的語言python。我創建了這個簡單的猜數字遊戲。但我的問題是,當你猜測腳本沒有結束的數字時,它會一直重複。我只想知道爲什麼。謝謝。爲什麼我的簡單的猜謎遊戲結束時,當你已經猜到了多少?

P.S.任何其他技巧將不勝感激,如如何改善編碼。裸記住我是全新的,我真的不知道很多功能,所以是簡單和居高臨下地(我不介意)。乾杯! [呃...我怎麼讓這個更不合理?我想編輯腳本間距一點是它讓sating它需要更多的substansive所以希望這額外的文本,使之更substansive ...只是忽略這部分]

import random 
running = True 

while running: 
    guessTaken = 0 
    print("Hello! What is your name? ") 
    myName = input() 

    number = random.randint(0,10) 
    print("Well, " +myName+ ", I am thinking of a number between 1 and 10.") 
    print("I'll give you 10 guesses, see if you can guess the number I'm thinking of!") 

    while guessTaken < 10: 
     guess = input("Go on! Take a guess: ") 
     guess = int(guess) 

     guessTaken += 1 

     if number > guess: 
      print("Too low!") 
     if number < guess: 
      print("Too high!") 
     if number == guess: 
      print("You got it!") 
      guessTakenstr = str(guessTaken) 
      print("Good job " +myName+ ", you guessed my number in " +guessTakenstr+ " guesses!") 
      input("Press <enter> to exit") 
      running = False 

    if number != guess: 
     number = str(number) 
     print("Sorry, you've had your 10 goes! The number I was think of was " +number) 
     running = False 
+0

您的縮進是否正確?如果沒有,你能糾正它嗎?目前根據你的縮進,你永遠不會在運行時出現''循環。 –

回答

1

您需要更改條件

while guessTaken < 10: 

while (guessTaken < 10) and running: 

編輯

添加更多解釋。 的while循環將檢查情況guessTaken < 10,並繼續運行10次,無論你輸入什麼(因爲guessTaken在循環遞增一次)。爲了打破循環,您可能需要添加一個break聲明這裏

if number == guess: 
     print("You got it!") 
     guessTakenstr = str(guessTaken) 
     print("Good job " +myName+ ", you guessed my number in "+guessTakenstr+ " guesses!") 
     input("Press <enter> to exit") 
     running = False 
     break # Break statement added 

,或者您需要(再次)進入循環,如果用戶進行了正確的輸入,如我的回答

前檢查
while (guessTaken < 10) and running: 
+0

感謝kampta,這似乎解決了這個問題,我想我理解爲什麼,但如果你有時間,你能解釋爲什麼這個工作? – Physco111

+0

我在答案中增加了更多解釋。讓我知道它是否有效。 – kampta

0

我猜測你的內心縮進while循環是在你的程序實際上是正確的(即它縮進while running:內2位)環路 -

print("I'll give you 10 guesses, see if you can guess the number I'm thinking of!") 

    while guessTaken < 10: 

否則程序會甚至從來沒有達到猜測數字的一部分。

在這種情況下,問題在於,如果數字等於猜測,那麼即使您設置了running=False,也不會突破內部while循環,因此您的程序仍會繼續,直到您完成10個猜測。

另外,從程序看起來你真的不需要外循環,因爲經過10次猜測你仍然退出循環(所以它只運行一次迭代),如果是這樣,你可以刪除該環(該環while running:)共和跳出while guessTaken < 10:循環。示例 -

guessTaken = 0 
print("Hello! What is your name? ") 
. 
. 

while guessTaken < 10: 
    . 
    . 
    if number == guess: 
     print("You got it!") 
     guessTakenstr = str(guessTaken) 
     print("Good job " +myName+ ", you guessed my number in " +guessTakenstr+ " guesses!") 
     input("Press <enter> to exit") 
     break 

if number != guess: 
    number = str(number) 
    print("Sorry, you've had your 10 goes! The number I was think of was " +number) 
+0

謝謝Anand,我嘗試了你的代碼,但是一旦你猜到了它的數字,它只是從一開始就重複整個腳本 - 從「你好,你叫什麼名字」部分 - 我不知道是否因爲我正確地輸入了你的腳本,我應該添加到它? – Physco111

+0

你沒有刪除'while running:'loop?請仔細閱讀答案中的完整描述,而不是僅複製代碼。 –

+0

哦,是的,我已經做到了,它的工作。謝謝。我仍然在掌握編程。似乎有不同的方法來解決同樣的問題。 – Physco111