"""
1.根据用户输入内容打印其权限
    '''
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户
    '''
# 1.获取用户名
username = input('username>>>:').strip()
# 2.判断用户身份
if username == 'jason':
    print('超级管理员')
elif username == 'tom':
    print('普通管理员')
# 3.有两种方式
# elif username == 'jack' or username == 'rain':
elif username in ['jack', 'rain']:
    print('业务主管')
else:
    print('普通用户')
2.编写用户登录程序
   要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
      eg:black_user_list = ['jason','kevin','tony']
   如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
          eg: oscar 123
black_user_list = ['jason', 'kevin', 'tony']
# 1.获取用户名
username = input("username>>>:").strip()
# 2.判断是否是黑名单用户
if username in black_user_list:
    print('不好意思 您已经被拉黑了')
else:
    password = input('password>>>:').strip()
    if username == 'oscar' and password == '123':
        print('登录成功')
    else:
        print('用户名或密码错误')
3.编写一个用户登录程序
   用户如果登录失败 则只能尝试三次
   用户如果登录成功 则直接结束程序
# 提前定义一个记录用户尝试次数的计数器
count = 1
while count < 4:
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    if username == 'jason' and password == '123':
        print('登录成功')
        break
    else:
        print('用户名或密码错误')
        count += 1
4.编写一个用户登录程序
   用户如果登录失败 可以无限制尝试
   用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
       eg: 用户输入cmd指令 则程序打印'正在执行您的指令:cmd'
   给用户提供一个退出命令 用户一旦输入则退出整个程序
       eg: 用户输入q指令 则程序先打印该指令再结束
flag = True
while flag:
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    if username == 'jason' and password == '123':
        print('登录成功')
        while flag:
            cmd = input('请输入您的指令>>>:').strip()
            if cmd == 'q':
                flag = False
            print(f'正在执行您的命令:{cmd}')
    else:
        print('用户名或密码错误')
5.编写猜年龄的游戏
   代码提前定义出真实的年龄 之后获取用户猜测的年龄判断
   用户有三次猜测的机会 如果用完则提示用户是否继续尝试
   用户输入y则继续给三次机会 如果用户输入q则直接结束程序
real_age = 18
count = 1
while True:
    # 判断当前用户是第几次猜测
    if count == 4:
        is_guess = input('您已经猜测了三次 是否继续(y/n)>>>:').strip()
        if is_guess == 'y':
            count = 1  # 让计数器重新置为1
        else:
            print('欢迎下次继续猜')
            break
    guess_age = input('请输入猜测的年龄>>>:').strip()
    if not guess_age.isdigit():
        print('年龄必须是纯数字')
        continue
    guess_age = int(guess_age)
    if guess_age > real_age:
        print('猜大了')
        count += 1
    elif guess_age < real_age:
        print('猜小了')
        count += 1
    else:
        print('恭喜你猜对了!!!')
        break
6.计算1-100所有的数之和
count = 0
for i in range(1, 101):
    count += i
print(count)  
7.编写代码打印出下列图形(ps:for循环嵌套)
   *****
   *****
   *****
   *****
for i in range(4):  # 外层循环一次
    for j in range(5):  # 内层循环五次
        print('*', end='')  # 每次打印不换行
    print()  # 自带换行
8.基于字符串充当数据库完成用户登录(基础练习)
   data_source = 'jason|123'  # 一个用户数据
   获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
data_source = 'jason|123'
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# real_name, real_pwd = ['jason', '123']
real_name, real_pwd = data_source.split('|')  # 切割 解压赋值
if username == real_name and password == real_pwd:
    print('登录成功')
else:
    print('用户名或密码错误')
9.基于列表充当数据库完成用户登录(拔高练习)  # 多个用户数据
   data_source = ['jason|123', 'kevin|321','oscar|222']
data_source = ['jason|123', 'kevin|321', 'oscar|222']
username = input('username>>>:').strip()
password = input('password>>>:').strip()
for data in data_source:  # 'jason|123'    'kevin|321'
    real_name, real_pwd = data.split('|')
    if real_name == username and real_pwd == password:
        print('登录成功')
        break
else:
    print('用户名或密码错误')
10.2.编写员工管理系统
    1.添加员工信息
    2.修改员工薪资
    3.查看指定员工
    4.查看所有员工
    5.删除员工数据
    提示:用户数据有编号、姓名、年龄、岗位、薪资
    数据格式采用字典:思考如何精准定位具体数据>>>:用户编号的作用
11.去重下列列表并保留数据值原来的顺序
   eg: [1,2,3,2,1] 去重之后 [1,2,3]
   l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
new_list = []
for i in l1:
    if i not in new_list:
        new_list.append(i)
print(new_list)
12.统计列表中每个数据值出现的次数并组织成字典展示
   eg: l1 = ['jason','jason','kevin','oscar']
      结果:{'jason':2,'kevin':1,'oscar':1}
   真实数据
       l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']
l1 = ['jason', 'jason', 'kevin', 'oscar', 'kevin', 'tony', 'kevin']
new_dict = {}
for i in l1:  # 'jason'  'jason'   'kevin'
    if i not in new_dict:
        new_dict[i] = 1  # {'jason':1}
    else:
        new_dict[i] += 1  # {'jason':1+1}
print(new_dict)  # {'jason': 2, 'kevin': 3, 'oscar': 1, 'tony': 1}
13.编写简易版本的拷贝工具
   自己输入想要拷贝的数据路径 自己输入拷贝到哪个地方的目标路径
   任何类型数据皆可拷贝
   ps:个别电脑C盘文件由于权限问题可能无法拷贝 换其他盘尝试即可
source_path = input('请输入想要拷贝的文件路径>>>:').strip()
target_path = input('请输入目的地址路径>>>:').strip()
with open(source_path,'rb') as read_f,open(target_path,'wb') as write_f:
    for line in read_f:
        write_f.write(line)
14.利用文件充当数据库编写用户登录、注册功能
   文件名称:userinfo.txt
   基础要求:
      用户注册功能>>>:文件内添加用户数据(用户名、密码等)
       用户登录功能>>>:读取文件内用户数据做校验
      ps:上述功能只需要实现一次就算过关(单用户) 文件内始终就一个用户信息
while True:
    print("""
# 1.
# 注册功能
# 2.
# 登录功能
""")
func_id = input('请输入想要执行的功能编号>>>:').strip()
if func_id == '1':
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    user_data = f'{username}|{password}'
    with open(r'userinfo.txt','w',encoding='utf8') as f:
        f.write(user_data)
    print(f'{username}注册成功')
elif func_id == '2':
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    with open(r'userinfo.txt','r',encoding='utf8') as f:
        file_data = f.read()  # 'jason|123'
    real_name, real_pwd = file_data.split('|')
    if username == real_name and password == real_pwd:
        print('登录成功')
        break
    else:
        print('用户名或密码错误')
 拔高要求:
    用户可以连续注册
       用户可以多账号切换登录(多用户)  文件内有多个用户信息
  ps:思考多用户数据情况下如何组织文件内数据结构较为简单
   提示:本质其实就是昨天作业的第二道题 只不过数据库由数据类型变成文件
"""
while True:
    print("""
        1.注册功能
        2.登录功能
    """)
    func_id = input('请输入想要执行的功能编号>>>:').strip()
    if func_id == '1':
        username = input('username>>>:').strip()
        # 先判断当前用户名是否已存在
        with open(r'userinfo.txt', 'r', encoding='utf8') as f:
            for line in f:
                if username == line.split('|')[0]:
                    print('用户名已存在')
                    break
            else:
                password = input('password>>>:').strip()
                user_data = f'{username}|{password}\n'  # 一个用户一行 所以需要换行符
                with open(r'userinfo.txt', 'a', encoding='utf8') as f:
                    f.write(user_data)
                print(f'{username}注册成功')
    elif func_id == '2':
        username = input('username>>>:').strip()
        password = input('password>>>:').strip()
        with open(r'userinfo.txt', 'r', encoding='utf8') as f:
            for line in f:
                real_name, real_pwd = line.split('|')  # ['jason', '123\n']
                if real_name == username and password == real_pwd.strip('\n'):
                    print('登录成功')
                    break
            else:
                print('用户名或密码错误')