猜年龄升级版
'''
需求如下:
- 年龄随机(18-60)之间 ,只能猜三次,三次之后还想玩需要充值
- 猜中之后可以进行两次大转盘抽奖 奖品存储在文件中,用户可以抽两次奖
- 注要做输入的字符判断
'''
# 导入随机数的模块库
import random
# 首先随机一个18-60之间的年龄
random_age = random.randint(18,60)
# 定义一个变量做游戏次数计数
count = 0
# 打印一个游戏开始的头(纯属为了显示好看)
print('*'*25,'游戏开始','*'*25)
# 程序主题,开始进行循环控制
while count < 3:
# 用户输入自己猜测的年龄
guess_age = input(f'请输入你猜的年龄,还有{3-count}次游戏机会:')
# 游戏次数减一
count += 1
# 判断输入的字符是否符合要求,不符合则跳出重新输入
if not guess_age.isdigit():
print('你的输入有误,请输入正确的格式')
if count == 3:
inp_y = input('你的游戏次数已用完,请输入"y or Y "获得三次游戏机会:').lower()
# 如果输入了y就,将count 置为 0 ,继续游戏
if inp_y == 'y':
count = 0
else:
# 如果没有输入y,而是其他字符就直接结束游戏
print('你的输入有误,已退出游戏')
break
continue
# 将输入的字符型数据转换为整型
guess_age = int(guess_age)
# 判断输入的年龄和我们要猜的年龄
if guess_age == random_age :
print('恭喜您,猜中了。接下来进入抽奖环节')
# 猜对之后就进入到抽奖环节
get_prize = {} # 定义一个空字典,用于存储接下来获得奖励
# 首先打印出所有的奖品选项
with open('prize.txt', 'r', encoding='utf8') as f:
data = f.read()
# 将文件中的数据放入到一个数据字典中
data_dict = dict(eval(data))
# 打印这个字典中的数据
for k, v in data_dict.items():
print(f'奖品编号:{k} {v}')
# 进行抽奖循环
for i in range(2):
in_start = input(f'请输入"s or S"进行抽奖,剩余{2 - i}次抽奖机会:').lower()
if in_start == 's':
# 随机获取中奖的编号
prize_num = random.randint(0, 8)
# 打印抽出来的结果
print(f'恭喜您抽得以下奖品:{data_dict[prize_num]}')
# 将 抽出来的奖品放入到我们的奖品字典中
if data_dict[prize_num] in get_prize.keys():
get_prize[data_dict[prize_num]] += 1
else:
get_prize[data_dict[prize_num]] = 1
else:
print('你放弃了一次抽奖机会')
else:
print('您的抽奖机会已用完,您获得以下奖品:')
# 打印出我们抽到的奖品汇总信息
for i, j in get_prize.items():
print(f'奖品{i} {j}个', end=' ')
# 跳出while循环,结束游戏
break
elif guess_age > random_age :
print('对不起,猜大了')
elif guess_age < random_age :
print('对不起猜小了')
# 当count为3的时候证明已经猜了三次,这个时候要选择是否继续猜下去了
if count == 3:
inp_y = input('你的游戏次数已用完,请输入"y or Y "获得三次游戏机会:').lower()
# 如果输入了y就,将count 置为 0 ,继续游戏
if inp_y == 'y':
count = 0
continue
else:
# 如果没有输入y,而是其他字符就直接结束游戏
print('你的输入有误,已退出游戏')
break
# 打印游戏结束语(纯属好看,没有实际意义)
print('\n',"*"*25,"游戏结束","*"*25)