第一阶段:Python开发基础 day09 阶段性小结--猜年龄游戏升级版

猜年龄升级版

'''
需求如下:

  1. 年龄随机(18-60)之间 ,只能猜三次,三次之后还想玩需要充值
  2. 猜中之后可以进行两次大转盘抽奖 奖品存储在文件中,用户可以抽两次奖
  3. 注要做输入的字符判断
    '''
# 导入随机数的模块库
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)
posted @ 2019-08-06 17:12  foreversun92  阅读(214)  评论(0编辑  收藏  举报