5.1 问题
编写guess.py脚本,实现以下目标:
系统随机生成100以内的数字
要求用户猜生成的数字是多少
最多猜5次,猜对结束程序
如果5次全部猜错,则输出正确结果
5.2 方案
引用random模块生成1-100的随机数,用while循环语句让猜数字次数大于0,提示并获取用户输入整数值,在进行猜数字对错判断前先用if嵌套判断方式确定输入值是否合法,如果合法进行猜数字对错判断,判断结束后猜数字次数需减1,如果不合法重新进入循环,此时循环次数不减少
此程序需要注意的部分在于:
每局对错判断之后,猜数字次数一定要减1,这样猜数字次数等于0的时候,循环就结束了
5.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:编写脚本
[root@localhost day02]# vim guess.py
#!/usr/bin/env python3
import random
secret = random.randint(1,100) #生成随机数
time = 5 #猜数字的次数
print("---------欢迎来到猜数字的地方,请开始---------")
while time > 0:
guess = int(input("*数字区间0-100,请输入你猜的数字:"))
print("你输入数字是:",guess)
if 0 <= guess < 100:
if guess == secret:
print("猜对了,真厉害")
else:
print("太遗憾了,你猜错了,你还有",time-1,"次机会")
time -= 1
else:
print("输入非法,请重新输入")
print("游戏结束,正确的结果是:",secret)
步骤二:测试脚本执行
[root@localhost day02]# python3 guess.py
---------欢迎来到猜数字的地方,请开始---------
*数字区间0-100,请输入你猜的数字:100
你输入数字是: 100
输入非法,请重新输入
*数字区间0-100,请输入你猜的数字:0
你输入数字是: 0
太遗憾了,你猜错了,你还有 4 次机会
*数字区间0-100,请输入你猜的数字:-1
你输入数字是: -1
输入非法,请重新输入
*数字区间0-100,请输入你猜的数字:12
你输入数字是: 12
太遗憾了,你猜错了,你还有 3 次机会
*数字区间0-100,请输入你猜的数字:34
你输入数字是: 34
太遗憾了,你猜错了,你还有 2 次机会
*数字区间0-100,请输入你猜的数字:56
你输入数字是: 56
太遗憾了,你猜错了,你还有 1 次机会
*数字区间0-100,请输入你猜的数字:89
你输入数字是: 89
太遗憾了,你猜错了,你还有 0 次机会
游戏结束,正确的结果是: 47
步骤三:改进脚本
import random
num = random.randint(1, 100)
counter = 0
while counter < 5:
answer = int(input('guess the number: '))
if answer > num:
print('猜大了')
elif answer < num:
print('猜小了')
else:
print('猜对了')
break
counter += 1
else: # 循环被break就不执行了,没有被break才执行
print('the number is:', num)
测试脚本执行:
[root@localhost day02]# python3 guess2.py
猜大了
guess the number: 30
猜小了
guess the number: 50
猜小了
guess the number: 70
猜小了
guess the number: 78
猜小了
the number is: 88
[root@localhost day02]# python3 guess2.py
guess the number: 16
猜小了
guess the number: 90
猜大了
guess the number: 50
猜大了
guess the number: 30
猜对了