代码来自《父与子的编程之旅:与小卡特一块儿学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的一点小区别吧!
参考: