代碼來自《父與子的編程之旅:與小卡特一塊兒學Python 》第一章,我在本來的基礎上作了一些修改。html
原來代碼中的文字看着不怎麼像英文,我對其中一些單詞作了修改。(這個純屬無聊)python
思路:編程
同時,我將原來猜數字的代碼放在函數裏面用來重複調用:dom
import random def guess(): secret = random.randint(1, 99) guess = 0 tries = 0 print("Hey! I'm the Dread Pirate Roberts, and I have a secret!") print("It is a number from 1 to 99. I'll give you 6 tries.") while guess !=secret and tries < 6: guess = int(input("What's your guess?")) if guess < secret: print("Too low!") if guess > secret: print("Too high!") tries = tries + 1 if guess == secret: print("Great! You got it! Found my secret, you did!") else: print("No more guesses! Better luck next time!") print("The secret number was", secret) guess_flag=input("Do you want to countinue(Y/N):") if guess_flag=="Y": guess() guess()
執行結果(採用二分法能比較快速的猜中數字):python2.7
很明顯,在猜數字結束後,當詢問是否繼續,回答爲"Y"時報錯。函數
我試着把guess()方法放在def guess():前面,而後(貌似JavaScript是能夠這麼幹的呀):測試
錯誤緣由:spa
變量名和函數名同樣致使guess變量在調用函數前被賦值爲整型的一個數字,所以調用不成功code
修改以下:htm
import random def myguess(): secret = random.randint(1, 99) guess = 0 tries = 0 print("Hey! I'm the Dread Pirate Roberts, and I have a secret!") print("It is a number from 1 to 99. I'll give you 6 tries.") while guess !=secret and tries < 6: guess = int(input("What's your guess?")) if guess < secret: print("Too low!") if guess > secret: print("Too high!") tries = tries + 1 if guess == secret: print("Great! You got it! Found my secret, you did!") else: print("No more guesses! Better luck next time!") print("The secret number was", secret) guess_flag=input("Do you want to countinue(Y/N):") if guess_flag=="Y": myguess() myguess()
關於變量名和函數名重複的測試:
另外,raw_input()方法在python3.5中已經棄用,python2.7中可用,其餘版本我不清楚,多是python2和python3的一點小區別吧!
參考: