>>> from env_helper import info; info()
页面更新时间: 2024-01-14 09:33:56
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-16-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

3.7. —个小程序:猜数字

到目前为止,前面展示的小例子适合于介绍基本概念。现在让我们看一看,如何将所学的知识综合起来,编写一个更完整的程序。在本节中,我将展示一个简单 的猜数字游戏。在运行这个程序时,输出看起来像这样:

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))
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.
18
Your guess is too low.
Take a guess.
19
Your guess is too low.
Take a guess.
20
Good job! You guessed my number in 5guesses!

让我们逐行来看看代码,从头开始。

# This is a guess the number game.
import random
secretNumber = random.randint(1, 20)

首先,代码顶部的一行注释解释了这个程序做什么。 然后,程序导入了模块 random , 以便能用 random.randint() 函数生成一个数字, 让用户来猜。返回值是一个1到20之间的随机整数,保存在变量 secretNumber 中。

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())

程序告诉玩家,它有了一个秘密数字,并且给玩家6次猜测机会。 在 for 循环中,代码让玩家输入一次猜测,并检查该猜测。 该循环最多迭代6次。循环中发生的第一件事情, 是让玩家输入一个猜测数字。因为 input() 返回一个字符串,所 以它的返回值被直接传递给 int() ,它将字符串转变成整数。 这保存在名为guess 的变量中。

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!

如果该猜测既不大于也不小于秘密数字, 那么它就一定等于秘密数字, 这时你希望程序执行跳出 for 循环。

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))

for 循环后,前面的 if...else 语句检查玩家是否正确地猜到了该数字, 并将相应的信息打印在屏幕上。不论哪种情况, 程序都会打印一个包含整数值的变量 ( guessesTakensecretNumber )。 因为必须将这些整数值连接成字符串, 所以它将这些变量传递给 str() 函数, 该函数返回这些整数值的字符串形式。 现在这些字符串可以用 + 操作符连接起来, 最后传递给 print()函数调用。