第十天作业

用函数实现猜年龄游戏(含登陆注册功能)

import random # 导入随机数模块

def register():
    """注册"""
    print('注册功能')
    count = 0
    while count < 3:
        username_inp = input('请输入你的用户名:')
        pwd_inp = input('请输入你的密码:')
        re_pwd_inp = input('请再次输入你的密码:')
        if not pwd_inp == re_pwd_inp:  # 判断用户密码是否一致
            print('密码不一致')
            count += 1
            continue
        with open(f'user_info.txt', 'a', encoding='utf8') as fa:  # 将用户信息存入文件中
            fa.write(f'{username_inp}:{pwd_inp}\n')
            fa.flush()  # 先保存再运行
            break
    login()



def login():
    """登录"""
    print('登录功能')
    username_inp = input('请输入你的用户名:')
    pwd_inp = input('请输入你的密码:')
    with open(f'user_info.txt', 'r', encoding='utf8') as fr:
        for user_info in fr:
            username, pwd = user_info.split(':')
            if username.strip() == username_inp and pwd.strip() == pwd_inp:
                print('登陆成功,是否开始游戏?')  # 询问用户是否开始游戏
                while  True:
                    begin_game = input('请输入Y/N:')  # 判断用户的输入是否正确 
                    if begin_game != 'Y' and begin_game != 'N':
                        print('请正确输入')
                    if begin_game =='Y':  # 开始游戏就调用猜年龄函数
                        guess_age()
                        break
                    if begin_game=='N':
                        print('欢迎下次再来')
                        break
            else:
                print('登录失败')

def prize_info():
    """在文件中读取奖品"""
    with open(r'prize.txt', 'r', encoding='utf-8') as fr:
        prize_msg = fr.read()
    prize_dict = eval(prize_msg) # 使用eval函数将打开文件读取的字符串转为字典
    return prize_dict,prize_msg  
# print(prize_dict)




def guess_age():
    """猜年龄"""
    age = random.randint(1, 50) # 在1-50随机生成一个整数
    # print(age)
    age_count = 0
    while age_count < 3:
        age_inp = input('请输入你的猜测:')
        if not age_inp.isdigit():
            print('请输入一个数字:')
            continue
        age_inp_int = int(age_inp) # 转为整型
        if age_inp_int < age:
            print('太小了')
        elif age_inp_int > age:
            print('太大了')
        else:
            print('猜对了')
            get_prize(prize_info()[0], prize_info()[1]) # 猜对了调用获得奖品函数,实参以索引的形式调用返回值
            break
        age_count += 1



def get_prize(prize_dict,prize_msg):  # 形参为在文件中读取奖品函数中的返回值
    """获得奖品"""
    get_prize_dic = {}
    print(f'奖品如下:\n{prize_msg}')
    prize_count = 0
    while prize_count < 2:
        prize_inp = input('请选择你想要的奖品:')
        if prize_inp not in prize_dict:   # 用户输入的奖品不对,请用户重新输入
            print('请重新选择')
            continue
        prize = prize_dict[prize_inp]
        print(f'恭喜获得奖励:{prize}')
        if prize not in get_prize_dic:
            get_prize_dic[prize] = 1
        else:
            get_prize_dic[prize] += 1
        prize_count += 1
    print(f'总共获得奖品:{get_prize_dic},游戏结束')

猜你喜欢

转载自www.cnblogs.com/lyyblog0715/p/11551663.html