3.8 一个小程序:猜数字

这篇博客介绍了如何使用Python编写一个简单的猜数字游戏。程序通过`random`模块生成1到20之间的随机数,然后让玩家在六次机会内猜这个数字。通过`if`和`else`语句,程序提供反馈,告诉玩家猜测是高了还是低了。如果猜中,程序会显示猜中次数;没猜中则显示正确答案。文章还涵盖了函数的基本概念,包括作用域、异常处理和函数调用的重要性。
摘要由CSDN通过智能技术生成

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

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

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

3.9    小结


函数是将代码逻辑分组的主要方式。因为函数中的变量存在于它们自己的局部

作用域内,所以一个函数中的代码不能直接影响其他函数中变量的值。这限制了哪些代码才能改变变量的值,对于调试代码是很有帮助的。
函数是很好的工具,帮助你组织代码。你可以认为他们是黑盒。它们以参数的
形式接收输入,以返回值的形式产生输出。它们内部的代码不会影响其他函数中的变量。
在前面几章中,一个错误就可能导致程序崩溃。在本章中,你学习了 try 和 except
语句,它们在检测到错误时会运行代码。这让程序在面对常见错误时更有灵活性。


3.10    习题

1.为什么在程序中加入函数会有好处?
2.函数中的代码何时执行:在函数被定义时,还是在函数被调用时?
3.什么语句创建一个函数?
4.一个函数和一次函数调用有什么区别?
5.Python 程序中有多少全局作用域?有多少局部作用域?
6.当函数调用返回时,局部作用域中的变量发生了什么?
7.什么是返回值?返回值可以作为表达式的一部分吗?
8.如果函数没有返回语句,对它调用的返回值是什么?
9.如何强制函数中的一个变量指的是全局变量?
10.None 的数据类型是什么?
11.import areallyourpetsnamederic 语句做了什么?
12.如果在名为 spam 的模块中,有一个名为bacon()的函数,在引入 spam 后,

如何调用它?
13.如何防止程序在遇到错误时崩溃?
14.try 子句中发生了什么?except 子句中发生了什么?

3.11    实践项目
作为实践,请编写程序完成下列任务。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值