一、实验要求:
(1)在游戏开始时,随机生成一个1~100之间的整数。
(2)在游戏中,玩家有10次机会猜数。如果10次都没有猜中,则游戏失败;否则,游戏成功。
(3)在每一次猜数之后,如果未猜中,应提示猜大了还是猜小了,并提示下一次猜数的上下限。
二、测试用例:
测试用例编号 | 测试 | 预期测试结果 |
用例1 | 在9次之内猜中 | 游戏成功 |
用例2 | 在第10次猜中 | 游戏成功 |
用例3 | 猜范围外的数字 | 提示范围 |
用例4 | 猜范围内的数字 | 游戏失败 |
三、程序代码:
import random
def starts_zero(s):
# 判断该输入是否为以0为开头,避免输入八进制数
s = str(s)
if len(s) > 0 and s[0] == '0':
return False
else:
return True
def guess_number_game():
# 随机生成一个1~100之间的整数
number_to_guess = random.randint(1, 100)
print(number_to_guess)
attempts = 0
lower_bound = 1
upper_bound = 100
print("欢迎来到猜数游戏!")
print("我已经想好了一个1到100之间的数字,你有10次机会来猜。")
while attempts < 10:
attempts += 1
try:
# 获取用户的猜测
print("Please enter a number between {0} and {1}:".format(lower_bound,upper_bound),end = ' ')
gueess = input()
guess = int(gueess)
'''attempts += 1'''
if guess > 0 and guess < 101 and guess <= upper_bound and guess >= lower_bound and starts_zero(gueess):
# 检查猜测是否正确
if guess < number_to_guess:
print("猜小了!")
lower_bound = guess + 1
elif guess > number_to_guess:
print("猜大了!")
upper_bound = guess - 1
else:
print("恭喜你,猜对了!你用了{}次机会。".format(attempts))
return True # 游戏成功
else:
continue
except ValueError:
'''print("输入无效,请输入一个整数!")'''
'''attempts += 1'''# 如果在这里计数的话那么整数和字符两个输入不能同时计数
# 如果10次都没有猜中,则游戏失败
print("很遗憾,你没有在10次机会内猜中数字。")
return False
# 运行游戏
if guess_number_game():
print("游戏成功!")
else:
print("游戏失败。")
四、测试结果:
# 九次猜中
# 刚好在第十次猜中
# 猜范围之外的数字
# 猜范围内的数字
# 十次回车
# 以0为开头
# 含有英文字母
# 英文,汉字,数字,回车
# 含小数点
如果有其他需求可以留言,博主看到后会更新并解决问题。