案例主要要求是在一定范围内生成一个随机数,的用户可以自行决定游戏难度并且猜错了会有猜大了或是猜小了的提醒。用户必须在规定次数内猜出数字否者挑战失败。
这里我们要考虑到如果用户输入了一个非数字报错的情况,我们采用异常处理的方法来让用户进行重新输入。
如下生成随机数:
#引入生成随机数的模块
import random
#程序设定生成 1-20 之间的一个随机数
num = random.randint(1,20)
如下进行异常处理:
try: # 这里使用异常判断,若用户输入的不为数字则重新输入并且扣除一次机会
num_guess = int(input("请入您猜的数字为:"))
except ValueError:
count += 1
print(f"只能输入数字哦!还有{max_times - count}次数!")
else:
具体代码如下:
import random
def guess_num(max_times=3, max_value=100):
num = random.randint(0, max_value) # 生成随机数
count = 0 #count用来记录已猜次数
while (count < max_times): # 构建while循环,循环条件为已猜次数小于最大错误次数
try: # 这里使用异常判断,若用户输入的不为数字则重新输入并且扣除一次机会
num_guess = int(input("请入您猜的数字为:"))
except ValueError:
count += 1
print(f"只能输入数字哦!还有{max_times - count}次数!")
else:
if num_guess < num:
count += 1
print(f"小了哦!还有{max_times - count}次数!")
continue # 继续循环,返回到while循环最开始
elif num_guess > num:
count += 1
print(f"大了哦!还有{max_times - count}次数!")
continue # 继续循环,返回到while循环最开始
else:
print("恭喜!猜对了!")
break # 若猜对了退出while循环
if count == max_times: # 若在规定的次数内未猜对打印下方内容
print("很遗憾机会用尽!挑战失败!")
if __name__ == "__main__":
max_times = int(input("请输入最大错误次数为:")) # 用户输选择难度即最大错误次数
max_value = int(input("请输入最大数字为:")) # 选择猜数字的范围
guess_num(max_times=max_times, max_value=max_times) # 调用guess_num函数并进行传参