26-小程序_猜数字
2.10 小程序:猜数字
之前展示的那些示例对于引入基本概念很有用,现在来看看如何将你所学到的一切在一个更完整的程序中融合在一起。这一节将展示一个简单的“猜数字”游戏。运行该程序时,输出结果如下所示:
I am thinking of a number between 1 and 20.
Take a guess.
10
Your guess is too low.
Take a guess.
15 Your guess is too low.
Take a guess.
17
Your guess is too high.
Take a guess.
16
Good job! You guessed my number in 4 guesses!
在文件编辑器中输入以下源代码,并将文件另存为guessTheNumber.py:
# This is a guess the number game.
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 # This condition is the correct guess!
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))
可以在https://autbor.com/guessthenumber/上查看该程序的执行情况。让我们逐行来看看代码,从头开始看。首先,代码顶部的一行注释解释了这个程序做什么。然后,程序导入了模块 random ,以便能用 random.randint() 函数生成一个数字,让用户来猜。返回值是一个1到20之间的随机整数,保存在变量 secretNumber 中:
# This is a guess the number game.
import random
secretNumber = random.randint(1, 20)
程序告诉玩家,它有了一个秘密数字,并且给玩家6次猜测机会。在 for 循环中,代码让玩家输入一次猜测,并检查该猜测。该循环最多迭代6次。循环中发生的第一件事情,是让玩家输入一个猜测数字。因为 input() 函数返回一个字符串,所以它的返回值被直接传递给 int() 函数,它将字符串转变成整数。这保存在名为 guess 的变量中:
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.')
如果该猜测既不大于也不小于秘密数字,那么它就一定等于秘密数字,这时你希望程序执行跳出 for 循环:
else:
break # This condition is the correct guess!
在 for 循环后,前面的 if…else 语句检查玩家是否正确地猜到了该数字,并将相应的信息输出在屏幕上。不论哪种情况,程序都会输出一个包含整数值的变量( guessesTaken 和 secretNumber )。因为必须将这些整数值连接成字符串,所以它将这些变量传递给 str() 函数,该函数返回这些整数值的字符串形式。现在这些字符串可以用+操作符连接起来,最后传递给 print() 函数调用。
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))