作业07

无人久伴 提交于 2019-11-29 19:43:30
'''
0. (多用户)

0. 登录(保存用户信息)

1. (随机生成)给定年龄,用户可以猜三次年龄(保存用户每次输入的年龄)

2. 年龄猜对,让用户选择两次奖励

3. 用户选择两次奖励(选择奖励是概率性的)后可以退出

4. (输出日志)
'''

from logging_config import load_my_logging_cfg  # 固定写法

logger = load_my_logging_cfg()  # 固定写法

import random

# 用户信息
user_info_dict = {
    'nick': '123',
    'jason': '123',
    'tank': '123',
}
age_count = 0  # 计算次数
age = random.randint(1, 100)  # 给定年龄(1-100内的整数)
print(age)
# 奖品信息
prize_dict = {
    '0': "芭比娃娃",
    '1': "变形金刚",
    '2': "psp游戏机",
    '3': "奥特曼",
    '4': "遥控飞机",
    '5': "chongqiwawa",
    '6': "再来一次",
    '7': "欢迎下次光临",
}
prize_msg = '''
0 芭比娃娃
1 变形金刚
2 psp游戏机
3 奥特曼
4 遥控飞机
5 chongqiwawa
6 再来一次
7 欢迎下次光临
'''
get_prize_dict = {}  # 获取的奖品信息
login_count = 0

# 登录
while login_count < 3:
    # 与用户交互
    username_inp = input('请输入你的用户名:')
    pwd_inp = input('请输入你的密码:')

    # 验证登录
    if not (username_inp in user_info_dict and pwd_inp == user_info_dict.get(username_inp)):
        login_count += 1

        print('账号密码错误')
        continue

    print('登录成功,开始游戏!\n')

    # 猜年龄游戏
    while age_count < 3:

        age_inp = input('请输入你的年龄:')  # 与用户交互
        logger.info(f'用户 {username_inp} 第 {age_count} 次输入年龄为 {age_inp}')

        # robust(健壮性/撸棒性)
        if not age_inp.isdigit():
            print(f'\033[1;31;40m傻吊,你活了{age_inp}岁吗?\033[0m')  # f格式化可以拼接数字和字符串
            continue

        age_inp_int = int(age_inp)

        # 核心逻辑
        if age_inp_int > age:
            print('\033[1;31;40m猜大了\033[0m')
        elif age_inp_int < age:
            print('\033[1;31;40m猜小了\033[0m')
        else:
            print('猜对了')

            logger.info(f'{username_inp} 用户猜对了')

            prize_count = 0
            while prize_count < 2:
                print(f'\033[1;33;m奖品如下:{prize_msg}\033[0m')

                # 与用户交互
                prize_inp_choice = input('请按下Y/y开始抽奖:')

                if not (prize_inp_choice == 'Y' or prize_inp_choice == 'y'):
                    prize_count += 1

                    print('傻逼,请输入Y/y')
                    continue

                prize_choice = random.randint(0, 15)

                # 调概率
                if prize_choice in [6, 8]:
                    prize_choice = 6
                    prize_count -= 1
                elif prize_choice in [9, 10, 11, 12, 13, 14, 15]:
                    prize_choice = 7
                prize_choice = str(prize_choice)

                prize = prize_dict[prize_choice]

                # 奖品信息放入购物车
                if prize in get_prize_dict:
                    get_prize_dict[prize] += 1
                else:
                    get_prize_dict[prize] = 1

                print(f'恭喜你获得奖品 \033[1;31;m{prize}\033[0m')
                logger.info(f'{username_inp}获得奖品 \033[1;31;m{prize}\033[0m')

                prize_count += 1

            print(f'总共获得奖品为:\033[1;31;m{get_prize_dict}\033[0m')
            logger.info(f'{username_inp}总共获得奖品为:\033[1;31;m{get_prize_dict}\033[0m')
            login_count = 999
            break

        age_count += 1  # 失败计数加1
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!