一、摘要
当编写完后的代码执行第一次后达到了目标的预期效果,内心有些许满足,但是当突发情况产生后,程序便不能正常运行,于是准备从简单的版本开始出发,综合考虑使用者的需求,和使用过程中会遇到的问题,一步一步发现和解决问题,最终编写成目前自己满意的程序,由于目前知识有限,欢迎大家提出宝贵的建议。
二、游戏规则
下面我们通过一个“猜数字”的小游戏来看看如何使用while循环。猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。
三、简易版程序
1、代码
点击查看代码
#猜数字游戏
import random
Ai = random.randint(1, 100)
co = 0
while True:
co += 1
num = int(input('请输入: '))
if Ai > num:
print('大一点')
elif Ai < num:
print('小一点')
else:
print('恭喜你猜对了!')
break
print(f'你总共猜了{co}次')
if co > 7:
print('你的智商余额明显不足')
2、问题:
用户如果输入非整数,程序将会报错,游戏无法继续
四、改版1
1、解决:
通过if判断和break语句解决用户误输入非整数类型的报错
点击查看代码
import random
Ai = random.randint(1, 100)
co = 0
a = input('接下来我们将开始猜数字游戏,Are you ready! y/n: ')
if a == 'y':
while True:
co += 1
num = int(input('请输入: '))
if Ai > num:
print('大一点')
elif Ai < num:
print('小一点')
else:
print('恭喜你猜对了!')
break
print('你总共猜了{co}次')
if co > 7:
print('你的智商余额明显不足')
elif a == 'n':
print('程序运行结束')
else:
print('输入无效,程序终止')
2、问题:
通过解决了用户误输入报错的问题,程序基本正常运行,也提升了用户和程序的交互性。但是又发现了新的问题,用户交互性不够好,程序只能运行一次就自动结束。
五、改版2
1、解决:
通过嵌套if语句使得while语句内部的程序可以多次运行,为了避免if语句内部用户误输入再次报错,再使用while嵌套一层,然后使用break避免该结束的语句重复运行
点击查看代码
import random
Ai = random.randint(1,100)
a = input('接下来我们将开始猜数字游戏,Are you ready! y/n: ')
while True:
if a == 'y':
co = 0
while True:
num = int(input('请输入一个1-100之间的数字:'))
co +=1
if Ai > num:
print('你输入的数字小了')
elif Ai < num:
print('你输入的数字大了')
elif Ai == num:
if co < 7:
print(f'恭喜你猜对了!你一共用了{co}次,实在优秀')
a = input('请问是否继续游戏y/n: ')
if a == 'n':
break
else:
print(f'恭喜你猜对了!但是你一共用了{co}次,很遗憾的告诉你,你的智商余额明显不足')
a = input('请问是否继续游戏y/n: ')
if a == 'n':
break
else:
print('你输入的是无效的数字,程序自动终止')
break
elif a == 'n':
print('程序运行结束')
break
else:
print('输入无效,程序终止')
break
2、问题:
现在基本解决了用户误输入报错和交互性的问题,可以多次正常运行了,可是运行多次后发现程序提示用户输入次数是开始到程序结束的次数,但是预期希望的是每一次开始都是重新计算次数
六、改版三
1、解决:
通过每次重新开始都给co这个变量赋值为0,这样就解决了程序每次开始不重新计数的问题了
点击查看代码
import random
Ai = random.randint(1,100)
a = input('接下来我们将开始猜数字游戏,Are you ready! y/n: ')
while True:
if a == 'y':
co = 0
while True:
num = int(input('请输入一个1-100之间的数字:'))
co +=1
if Ai > num:
print('你输入的数字小了')
elif Ai < num:
print('你输入的数字大了')
elif Ai == num:
if co < 7:
print(f'恭喜你猜对了!你一共用了{co}次,实在优秀')
a = input('请问是否继续游戏y/n: ')
co = 0
if a == 'n':
break
else:
print(f'恭喜你猜对了!但是你一共用了{co}次,很遗憾的告诉你,你的智商余额明显不足')
a = input('请问是否继续游戏y/n: ')
co = 0
if a == 'n':
break
else:
print('你输入的是无效的数字,程序自动终止')
break
elif a == 'n':
print('程序运行结束')
break
else:
print('输入无效,程序终止')
break
七、总结
以上是目前运行程序发现并解决问题的一些思路,这个程序对高手而言或许不够简洁,但是基于目前知识有限,希望大家能够提出建议,还有运行中要是有发现其他问题欢迎提出,共同进步。最后小秀一把一次就猜对成绩,嘿嘿!