目录
前言
让大家久等啦,大家看完上次的小程序一定意犹未尽吧!那么今天我就给大家带来了更高级更好玩的小程序!快来跟着我的脚步一起来看一看吧!
一、前景回顾
这么久了大家一定忘记了猜数字1.0是什么样子的了吧,或者屏幕前的你也许是第一次看到我的文章,一定不知道之前的猜数字1.0是什么样子的对吧!那么我们就简单的来做个回顾吧!
我们来一起看一下猜数字1.0的运行效果:
这就是猜数字1.0的运行效果啦!大家先熟悉一下,有没有想起来什么呢?
二、思路讲解
回顾完猜数字1.0之后,那么大家一定好奇我是怎么做出了这个小程序了,那么我们就一起来看一看吧!
首先我先要把思路理清,那么我就边画流程图边理清思路,下面就是我制作本程序之前绘制的流程图了,大家可以跟着我的思路来看一下流程图!
你在输入姓名后,程序输出规则,那么你就要开始猜测数字了。那么如果你在猜测次数之内猜完那肯定是皆大欢喜,就会恭喜你猜的很准确,你也可以开心的重新再玩一局。可是如果你没有在猜测次数之内猜对怎么办呢?那你也不必灰心与难过了,因为我会鼓励你重新再来一局!
三、猜数字2.0介绍
看完流程图与我的讲解,那你再去看猜数字1.0的运行结果,相信你一定会发现它是有一些不足之处的。那就是不管你是猜对了还是猜错了,猜数字1.0时我都不会再让你重新在玩一局。
然而猜数字2.0就主要弥补了这一点问题,那么我们就一起来看一看猜数字2.0的运行结果吧!
这里我分别进行了两次猜测,大家可以看到的是,不管我在猜测次数用完之前猜对了还是说我在猜测次数用完之前也没有猜对,我都会要问一问你是不是要再来试试!
四、猜数字2.0源程序
看完猜数字2.0的运行结果,你是不是感觉这与1.0有所完善呢?
那么你也一定好奇这么有趣的小程序的源代码是什么样子的吧!那我们就一起来看一看吧!
# 猜数字游戏2.0
# 导入random模块
import random
# 定义循环次数
i = 0
# 将玩家名字进行赋值
name = input('你好呀,我是智能机器人小白,你叫什么名字呀!\n')
# 输出游戏规则
print(f'''{name}你好!很高兴认识你!这是一个猜数字的游戏!
下面我和你说说规则吧!
你可以在1~40之间选择一个数字
并且你有5次机会回答
不要输入不在范围外的数字哟
不然会浪费掉一次机会的呢
机会有限好好珍惜呀!
快来试试吧!''')
# 利用死循环实现再来一局
while True:
# 将要猜测的随机数进行赋值
number = random.randint(1, 40)
# 利用while循环,使玩家可以猜测5次
# while i < 5:
# 利用for循环,使玩家可以猜测5次
for i in range(5):
# 使用户输入数字并进行赋值
guess = int(input('输入你猜测的数字,让我来看看你猜的对不对!\n'))
# 运用if语句通过条件,判断玩家输入的数字是否在范围内(自己添加,切记)
if guess < 1 or guess > 40:
print('你输入的数字不在范围内还浪费掉了一次机会,好可惜呀')
# 运用if语句通过条件,判断是否猜小了
elif guess < number and i != 4:
print('你猜小了呦,再试试叭!')
# 运用if语句通过条件,判断是否猜大了
elif guess > number and i != 4:
print('你猜大了呦,再试试叭!')
# 运用if语句通过条件,判断是否为5次都猜错了
elif guess != number and i == 4:
print(f'很遗憾你用完了5次机会都没答对,正确答案是{number},重新开始游戏再试试叭!')
# 运用else输出玩家几次回答正确,并运用break退出循环
else:
print(f'{name}你真厉害,只用了{i + 1}次机会就回答正确啦!没错它就是{number}!')
break
# i自加1
i += 1
# 询问玩家是否要在再来一局
again = input('是否要重新开始,与我一起快乐的玩耍呢?\n')
# 利用条件判断,如果玩家输入为“是”,则将i的值初始化实现再来一次
if again == '是':
i = 0
# 如果玩家输入的不为“是”,则提示玩家并利用break退出循环
else:
print('那好吧,小白在这里等着你哟~')
break
大家看完源代码之后是不是会找到一点点感觉呢?大家可以先自己思考一下,或者也可以打开我的上一篇博客回顾一下猜数字1.0的源代码,来看一看为什么我可以做到让它来问你要不要重新开始呢?它又是如何重新开始的呢?
五、程序讲解
大家有没有想到我是如何做到的呢?来和我看一看和你想的一样不一样吧!
1、基础部分
(1)while循环与for循环
首先我在循环内做了一个while循环和for循环的兼容,在程序当中就是这里了:
# 定义循环次数
i = 0
# 利用while循环,使玩家可以猜测5次
while i < 5:
# 利用for循环,使玩家可以猜测5次
for i in range(5):
……
# i自加1
i += 1
由于for循环首次循环 i 的值为 0 ,所以在对whine循环中对 i 的初始值一定也要是 0 ,不然就会出现两种循环只能用一个的结果。
注意:在切换循环语句之后一定要将另一个循环注释掉,不然会因为缩进不规范而报错!
(2)数值大小判断
这里运用到的就是多重判断语句,语句语法非常简单,并且在上一篇博客已经给大家介绍过了,所以在这里就不过多介绍了。
# 运用if语句通过条件,判断玩家输入的数字是否在范围内(自己添加,切记)
if guess < 1 or guess > 40:
print('你输入的数字不在范围内还浪费掉了一次机会,好可惜呀')
# 运用if语句通过条件,判断是否猜小了
elif guess < number and i != 4:
print('你猜小了呦,再试试叭!')
# 运用if语句通过条件,判断是否猜大了
elif guess > number and i != 4:
print('你猜大了呦,再试试叭!')
# 运用if语句通过条件,判断是否为5次都猜错了
elif guess != number and i == 4:
print(f'很遗憾你用完了5次机会都没答对,正确答案是{number},重新开始游戏再试试叭!')
# 运用else输出玩家几次回答正确,并运用break退出循环
else:
print(f'{name}你真厉害,只用了{i + 1}次机会就回答正确啦!没错它就是{number}!')
break
这就是其中的多重判断了,那么其中的数值比较也是非常简单,不过其中那些 i != 4 的条件是什么意思呢?
它们是为了防止在最后一次猜测的时候也会输出猜大或者猜小这句话而出现的。
而需要注意的是由于程序是从上到下执行的,所以第一个判断只能是判断数值不在范围内,不然程序先判断猜大或者猜小,程序就会输出猜大或者猜小,因为条件已经满足!
2、再来一局
那么我们是如何实现再来一局的呢?
# 导入random模块
import random
……
# 利用死循环实现再来一局
while True:
# 将要猜测的随机数进行赋值
number = random.randint(1, 40)
……
# 询问玩家是否要在再来一局
again = input('是否要重新开始,与我一起快乐的玩耍呢?\n')
# 利用条件判断,如果玩家输入为“是”,则将i的值初始化实现再来一次
if again == '是':
i = 0
# 如果玩家输入的不为“是”,则提示玩家并利用break退出循环
else:
print('那好吧,小白在这里等着你哟~')
break
我首先运用了死循环while True来实现程序可以一直重复执行,当然这里的True也可以换做为除0之外的整数,因为在Python当中已经规定0代表False,其余整数为True。
之后我又运用了条件判断来判断你输入的是不是“是”,如果是“是”那么程序就会将 i 的值初始化为0,之后再次进入循环再来一局。
如果你输入的是“否”,程序则将会利用break退出程序。
这里要注意的是:
一定要将随机数的调用与赋值语句放在while True里面,不过也不能放到嵌套的循环里面。如果随机数的调用与赋值语句放在死循环外面,那么你想再来一局之后会出现要猜测的数值与第一次一样,没有改变;如果随机数的调用与赋值语句放在嵌套的循环里面呢,则会出现每次你输入猜测的数字的时候,要猜测的数值每次都会改变。
总结
以上内容就是猜数字2.0了,相对于猜数字1.0来说虽然提升不大,但是很有意义,大家有没有感觉这个猜数字2.0更加的智能而又人性化了呢?
最后还要感谢大家的浏览!如果大家对我的讲解内容以及程序如有疑问欢迎大家在评论区留言指出,我会积极的与大家进行互动;如果大家喜欢我的文章也欢迎大家点赞,我们一起探讨,一起学习!