猜年龄游戏函数版

'''
1. 在猜年龄的基础上编写登录、注册方法,并且把猜年龄游戏分函数处理,如
   2. 登录函数
   3. 注册函数
   4. 猜年龄函数
   5. 选择奖品函数
'''
import json
real_age = 18
prize_list = ['好迪洗发水', '绿箭侠', '小猪佩奇', '布娃娃', '再来一次!']
import random
user_prize_dict = {}
import os

def register():
    while True:
        username = input('输入用户名>>>(q退出):').strip().lower()
        if username=='q':break
        password = input('请输入密码>>>:').strip()
        re_password = input('请再次确认密码>>>:').strip()
        if not password == re_password:
            print('密码不一致,请重输!')
            continue
        user_dic = {'name': username, 'password': password}
        json_user_dic = json.dumps(user_dic)
        with open(f"{username}.txt", 'w', encoding='utf-8')as f:
            f.write(json_user_dic)
            f.flush()
            print('注册成功!')
            break

def login():
    count = 0
    while True:
        if count == 3:
            print('错误输入次数过多!')
            break
        username = input('请输入用户名>>>:').strip()
        if not os.path.exists(username + '.txt'):
            print('该用户不存在!')
            continue
        password = input('请输入密码>>>:').strip()
        with open(f"{username}.txt", 'r', encoding='utf-8') as f:
            user_json_dic = f.read()
            user_dic = json.loads(user_json_dic)
            if username == user_dic['name'] and password == user_dic['password']:
                print('登录成功!')
                guess_age()
                break
            else:
                print('用户名或密码错误!')
        count += 1

def guess_age():
    count = 0
    print('现在进入猜年龄游戏环节.......
')
    while True:
        count += 1
        if count == 4:
            print('抱歉!你三次都猜错了!')
            again_guess_age = input('请问是否要继续猜3次(y继续,n退出)>>>:').strip().lower()
            if again_guess_age == 'y':
                count = 0
                continue
            break
        age = input('请输入你的年龄>>>:').strip()
        if not age.isdigit():
            print('请输入纯数字!')
            continue

        age = int(age)
        if age > real_age:
            print('猜大了!')
        elif age < real_age:
            print('猜小了!')
        else:
            print('恭喜你!猜对了!
')
            choice_prize()
            break

def choice_prize():
    count = 1
    print('进入抽奖环节.....,您共有两次机会!
 奖品如下:')
    while True:
        for index, prize in enumerate(prize_list, 1):
            print(index, prize)
        choice = input('请按下按钮y随机选择奖品>>>:').strip().lower()
        if not choice == 'y':
            print('非法输入!')
            continue
        prize_choice = random.randint(1, 15)
        if prize_choice in [6, 7, 8]:
            prize_choice = 4
        elif prize_choice in [9, 10, 11, 12, 13, 14, 15]:
            prize_choice = 5
        prize = prize_list[prize_choice - 1]
        if prize in user_prize_dict:
            user_prize_dict[prize] += 1
        else:
            user_prize_dict[prize] = 1
        print(f'本次获得奖品为:{prize},您还有{2-count}次机会!
')
        if count == 2:
            if user_prize_dict.get('再来一次!'):
                user_prize_dict.pop('再来一次!')
            print(f'总共获得的奖品为:{user_prize_dict}')
            break
        count += 1


user_func_dic = {
    '1': register,
    '2': login,
}
while True:
    print('''
        先注册,登陆后才能玩猜年龄游戏哦!
        1. 注册
        2. 登录
    '''
          )
    choice = input('请选择功能编号(q退出)>>>:').strip().lower()
    if choice == 'q' : break
    if not choice in user_func_dic:
        print('错误输入')
        continue
    user_func_dic.get(choice)()
原文地址:https://www.cnblogs.com/zhangchaocoming/p/11552787.html