习题集
- 女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
def user(): # 填写用户的基本信息模块
"""
用户登录系统
输入用户的信息
:return:
"""
age = input('请输入用户的年龄:').strip()
hight = input('请输入用户的身高:').strip()
wight = input('请输入用户的体重:').strip()
return int(age), int(hight), int(wight)
def judge(): # 判断用户是否在所要求的区间
"""
判断年龄是否在18-22
体重 < 100
身高 > 160
:return:
"""
age, hight, wight = user() # 把所填写的用户信息分别赋值
# 判断是否在其中
if 18 <= age < 22 and hight > 160 and wight < 100:
return True
# 主程序端
if judge(): # 调用判断模块
print('小姐姐,加个好友!')
else:
print('老娘们,滚一边去!!!')
2.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
def register():
name = input('请输入用户名:').strip()
paw = input('请输入密码:').strip()
return name
def blacklist():
name = register()
black_user_list = ['jason', 'kevin', 'tony']
if name in black_user_list:
return False
else:
return True
if blacklist():
print('登录成功')
else:
print('此用户为黑名单')
3.编写一个用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序
def user():
"""
输入用户登录用户名密码
:return:
"""
name = input('请输入用户名:').strip()
paw = input('请输入密码:').strip()
return name, paw
def judge():
"""
判断用户名密码是否一致
:return:
"""
name, paw = user()
if name == 'jcs' and paw == '123':
return True
for i in range(3):
if judge():
print('登陆成功')
break
else:
print('用户名或密码错误')
4.编写一个用户登录程序
用户如果登录失败 可以无限制尝试
用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
eg: 用户输入cmd指令 则程序打印'正在执行您的指令:cmd'
给用户提供一个退出命令 用户一旦输入则退出这个程序
eg: 用户输入q指令 则程序先打印该指令再结束
def user(): # 填写登录信息模块
"""
输入用户名和密码:
:return:
"""
name = input('请输入用户名:').strip()
paw = input('请输入密码:').strip()
return name, paw
def judge(): # 判断用户名密码是否正确
name, paw = user()
if name == 'jcs' and paw == '123':
return True
def instruct(): # 输入内循环的指令
"""
输入指令操作
:return:
"""
cmd = input('请输入cmd指令:').strip()
return cmd
def recycle(): # 进行内循环,输入指令模块
while True:
cmd = instruct()
if cmd == 'p':
print('正在退出指令!!!')
break
else:
print('正在执行你的指令')
while True: # 主程序
if judge(): # 调用判断模块
print('登录成功') # 正确进入内循环
recycle() # 调用内循环模块
break
else:
print('用户名密码错误') # 错误继续执行外循环
5.编写猜年龄的游戏(拔高练习 尝试编写)
用户有三次猜测的机会 如果用完则提示用户是否继续尝试
用户输入y则继续给三次机会 如果用户输入q则直接结束程序
age = 24
def int_age():
age = input('请输入你猜的年龄:').strip()
return int(age)
def int_chance():
cmd = input('请输入指令:').strip()
return cmd
def chance():
"""
循环:
输入指令
判断是再给三次机会,还是退出
:return:
"""
while True:
cmd = int_chance()
if cmd == 'y':
print('送你了三次机会哟!')
elif cmd == 'q':
print('退出此程序')
break
else:
print('请输入正确的指令:')
return True
def judge():
age = int_age()
if 18 > age:
print('有点小了哦')
if 18 <= age < 30 and age != 24:
print('快猜到了')
if age >= 30:
print('有嫩么老吗?')
if age == 24:
print('恭喜猜中了!')
return True
time = 0
while time < 4:
if judge():
if age == 24:
break
time += 1
if time == 3:
print('继续猜请输入y,退出请输入q!!!')
if chance():
time = 0
continue
break
6.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
data_source = ['jason|123', 'kevin|321','oscar|222']
def user():
name = input('请输入用户名:').strip()
paw = input('请输入密码:').strip()
return name, paw
def judge():
name, paw = user()
for i in data_source:
if name == i.split('|')[0]:
if paw == i.split('|')[1]:
return True
else:
return False
while True:
if judge():
print('登录成功')
break
else:
print('用户名或密码错误')
7.编写员工管理系统
1.添加员工信息
2.修改员工薪资
3.查看指定员工
4.查看所有员工
5.删除员工数据
提示:用户数据有编号、姓名、年龄、岗位、薪资
数据格式采用字典:思考如何精准定位具体数据>>>:用户编号的作用
info = []
flag = True
while flag:
print("""
---------------员工管理系统——-——————————-————-
1.添加员工信息
2.修改员工薪资
3.查看指定员工
4.查看所有员工
5.删除员工数据
6.退出此系统
""")
choice = input('请选择你想要实现的功能(1-6):').strip()
if choice == '1':
print('——-—-—-—-—-—请添加员工的基本信息-—-—-—-—--—-—-—--')
id = input('请输入员工的编号:').strip()
name = input('请输入员工的姓名:').strip()
age = input('请输入员工的年龄:').strip()
post = input('请输入员工的岗位:').strip()
pay = input('请输入员工的薪资:').strip()
if id in info:
print('用户名已存在')
else:
new_info = {'job_num':id,'username':name ,'age':age,'post':post,'pay':pay}
info.append(new_info)
print(f'职工{id}添加成功')
elif choice == '2':
print('——-—-—-—-—-—请修改员工的薪资-—-—-—-—--—-—-—--')
num = input('请输入需要读取职工的编号:').strip()
for i in info:
if i['job_num'] == num:
money = input('请输入需改动的薪资:').strip()
i['pay'] = money
elif choice == '3':
print('——-—-—-—-—-—查看指定员工-—-—-—-—--—-—-—--')
num = input('请输入指定员工的编号:').strip()
for i in info:
if i['job_num'] == num:
print(f"""
-----------------该员工基本信息--------------
{i['job_num'], i['username'],i['age'], i['post'], i['pay']}
----------------------------------------
""")
else:print('用户不存在')
elif choice == '4':
print('——-—-—-—-—-—查看所有员工-—-—-—-—--—-—-—--')
for i in info:
print(f"""
-----------------该员工基本信息--------------
{i['job_num'], i['username'],i['age'], i['post'], i['pay']}
----------------------------------------
""")
elif choice == '5':
print('——-—-—-—-—-—删除员工数据-—-—-—-—--—-—-—--')
num = input('请输入员工的职工号:').strip()
for i in info:
if i['job_num'] == num:
info.remove(i)
print('已删除')
else:
print('不存在')
elif choice == '6':
print('正在退出此程序')
break
8..编写员工管理系统
1.添加员工信息
2.修改员工薪资
3.查看指定员工
4.查看所有员工
5.删除员工数据
提示:用户数据有编号、姓名、年龄、岗位、薪资
数据格式采用字典:思考如何精准定位具体数据>>>:用户编号的作用
info =[]
flag = True
def cyclic(): # 创建一个用户登录程序函数
while flag:
print("""
---------------员工管理系统——-——————————-————-
1.添加员工信息
2.修改员工薪资
3.查看指定员工
4.查看所有员工
5.删除员工数据
6.退出此系统
""")
choice = input('请选择你想要实现的功能(1-6):').strip()
return choice
def user():
id = input('请输入员工的编号:').strip()
name = input('请输入员工的姓名:').strip()
age = input('请输入员工的年龄:').strip()
post = input('请输入员工的岗位:').strip()
pay = input('请输入员工的薪资:').strip()
new_info = {'job_num': id, 'username': name, 'age': age, 'post': post, 'pay': pay}
return new_info
def storage(): # 存储
info.append(user())
return info
def job_id():
num = input('请输入需要读取职工的编号:').strip()
return num
def salary():
num = job_id()
for i in info:
if i['job_num'] == num:
money = input('请输入需改动的薪资:').strip()
i['pay'] = money
return True
def view():
num = job_id()
for i in info:
if i['job_num'] == num:
print(f"""
-----------------该员工基本信息--------------
{i['job_num'], i['username'], i['age'], i['post'], i['pay']}
----------------------------------------
""")
break
else:
print('查无此人')
return True
def all_view():
for i in info:
print(f"""
-----------------该员工基本信息--------------
{i['job_num'], i['username'], i['age'], i['post'], i['pay']}
----------------------------------------
""")
else:
return True
def delete():
num = job_id()
for i in info:
if i['job_num'] == num:
info.remove(i)
else:
return True
while flag:
choice = cyclic()
if choice == '1':
print('——-—-—-—-—-—请添加员工的基本信息-—-—-—-—--—-—-—--')
info.append(user())
print('添加成功')
elif choice == '2':
print('——-—-—-—-—-—请修改员工的薪资-—-—-—-—--—-—-—--')
if salary():
print('职工薪资已修改')
else:
print('查无此人')
elif choice == '3':
print('——-—-—-—-—-—查看指定员工-—-—-—-—--—-—-—--')
view()
elif choice == '4':
print('——-—-—-—-—-—查看全体员工-—-—-—-—--—-—-—--')
all_view()
elif choice == '5':
print('——-—-—-—-—-—删除员工数据-—-—-—-—--—-—-—--')
if delete():
print('此员工已删除')
else:
print('查无此人')
elif choice =='6':
print('——-—-—-—-—-—正在退出程序—-—-—-—--—-—-—--')
flag = False
else:
print('没有这个功能')
9.利用文件充当数据库编写用户登录、注册功能
文件名称: userinfo.txt
基础要求:
用户注册功能 >> >: 文件内添加用户数据(用户名、密码等)
用户登录功能 >> >: 读取文件内用户数据做校验
ps: 上述功能只需要实现一次就算过关(单用户)
文件内始终就一个用户信息
f = open('userinfo.txt') # 打开存账号的文件
res = f.read() # 读取文件中的内容
user_list = res.split() # 分割字符串,返回列表
info = {} # 定义一个空字典
for i in user_list:
name = i.split(',')[0]
paw = i.split(',')[1]
info[name] = paw # 循环列表,取出列表中的值存入字典
while True:
print("""
------------用户登录/注册------------
1.登录
2.注册
""")
choice = input('请输入你的选择:').strip()
if choice == '1': # 当输入1 时进入登录界面
print('--------进入登录界面------------')
with open(r'userinfo.txt', 'r', encoding='utf8') as f: # 查看文件信息
name = input('请输入你的用户名:').strip()
paw = input('请输入你的密码:').strip()
register = name + ',' + paw # 按照文件的格式赋值给register
if register in res: # 查看信息是否在文件内
print('登录成功')
else:
print('用户名或密码错误')
f.close()
elif choice == '2':
print('--------------进入注册界面----------------')
with open(r'userinfo.txt', 'a', encoding='utf8') as f: # 输入追加的信息
name = input('请输入用户名:').strip()
paw = input('请输入密码:').strip()
paw1 = input('请再次输入密码:').strip()
if paw != paw1:
print('两次密码不一致!')
elif name == '' or paw == '':
print('用户名密码不能为空!')
elif name in info:
print('用户名已存在')
else:
print('恭喜注册成功!')
f.write('\n' + name + ',' + paw) # 按照这个格式写入文件
f.close()
else:
print('没有此选择对应的程序')
10.利用文件充当数据库编写用户登录、注册功能
文件名称: userinfo.txt
基础要求:
用户注册功能 >> >: 文件内添加用户数据(用户名、密码等)
用户登录功能 >> >: 读取文件内用户数据做校验
f = open(r'userinfo.txt', 'r', encoding='utf8') # 打开存账号的文件
res = f.read() # 读取文件中的内容
user_list = res.split() # 分割字符串,返回列表
info = {} # 定义一个空字典
for i in user_list:
name = i.split(',')[0]
paw = i.split(',')[1]
info[name] = paw # 循环列表,取出列表中的值存入字典
flag = True
def cyclic(): # 创建一个用户登录程序函数
while flag:
print("""
--------------用户登录/注册---------------
1.登录
2.注册
3.退出程序
""")
choice = input('请输入你的选择:').strip()
return choice
def register(name, paw): # 用户注册
with open(r'userinfo.txt', 'a', encoding='utf8') as f: # 查看文件信息
temp = '\n' + name + ',' + paw
f.write(temp) # 按照这个格式写入文件
def login(name, paw): #用户登录
with open(r'userinfo.txt', 'r', encoding='utf8') as f: # 输入追加的信息
register = name + ',' + paw
if register in res:
return True # 登录成功
else:
return False # 登录失败
def contrast(name, paw, paw1): # 判断是否可注册
if paw != paw1:
print('两次密码不一致!')
elif name == '' or paw == '':
print('用户名密码不能为空!')
elif name in info:
print('用户名已存在')
else:
print('恭喜注册成功!')
while flag:
choice = cyclic() # 调用登录程序的相应函数
if choice == '1':
print('-------------请入登录界面----------------')
name = input('请输入你的用户名:').strip()
paw = input('请输入你的密码:').strip()
i = login(name, paw) # 调用登录函数
if i:
print('登录成功')
else:
print('用户名或密码错误')
elif choice == '2':
print('--------------进入注册界面----------------')
name = input('请输入用户名:').strip()
paw = input('请输入密码:').strip()
paw1 = input('请再次输入密码:').strip()
contrast(name,paw, paw1) # 调用对比
register(name, paw) # 进行添加
elif choice == '3':
print('欢迎下次使用')
flag = False
else:
print('请输入正确的指令')
- 基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
data_source = ['jason|123', 'kevin|321', 'oscar|222']
flag = True
while flag:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
for i in data_source:
name,paw = i.split('|')
if name == username and paw == password:
print('登陆成功')
flag = False
break
else:
print('用户名或密码错误')
12.1.编写员⼯管理系统
功能要求:
1.添加员⼯信息
提示:编号(不能重复)、姓名、年龄、薪资
2.查询特定员⼯
提示:根据编号查找 展示结构⽤格式化输出美化
3.修改员⼯薪资
提示:先根据编号查找之后再修改薪资
4.查询所有员⼯
提示:循环⼀⾏⾏展示
5.删除特定员⼯
提示:根据编号确定
info = {}
def register():
"""
增加用户名功能
注册信息
:return:
"""
id = input('请输入员工职工编号:').strip()
if id in info:
print('该职工号已存在')
else:
username = input('请输入员工姓名:').strip()
age = input('请输入员工年龄:').strip()
pay = input('请输入员工薪资:').strip()
new_info = {}
new_info['id'] = id
new_info['username'] = username
new_info['age'] = age
new_info['pay'] = pay
info[id] = new_info
return True
def view():
"""
查看指定员工信息
:return:
"""
print('--------进入查看功能界面,请输入需查看的职工id------------')
id = input('请输入需查看的职工ID:').strip()
if id in info:
data = info.get(id)
print(f"""
--------------------------------------------
职工编号:{data.get('id')}
职工姓名:{data.get('username')}
职工年龄:{data.get('age')}
职工薪资:{data.get('pay')}
--------------------------------------------
""")
return True
def adjust():
"""
修改员工工资
:return:
"""
print('进入修改员工薪资界面')
id = input('请输入需修改员工的职工号:').strip()
info1 = info.get(id)
if id in info:
money = input('请输入修改后的薪资:').strip()
info1['pay'] = money
info[id] = info1
print('员工编号为%s的薪资以修改'%id)
else:
print('该职工号不存在')
def all_view():
"""
查看所有员工
:return:
"""
new_info = info.values()
for i in new_info:
print(f"""
----------------------------------------
职工编号:{i.get('id')}
职工姓名:{i.get('username')}
职工年龄:{i.get('age')}
职工薪资:{i.get('pay')}
---------------------------------------
""")
def delete():
"""
删除指定用户
:return:
"""
print('进入删除指定员工信息功能界面')
id = input('请输入需要删除的职工号:').strip()
if id in info:
info.pop(id)
else:
print('没有找到该员工编号')
dic_func = {
'1': register,
'2': view,
'3': adjust,
'4': all_view,
'5': delete
}
while True:
print("""
------------------------------
1. 添加员工信息
2. 查询指定员工信息
3. 修改指定员工薪资
4. 查看全部员工
5. 删除指定员工
""")
func_id = input('请输入功能编号:').strip()
if func_id in dic_func:
func = dic_func.get(func_id)
func()
13.编写一个用户认证装饰器
基本要求
执行每个函数的时候必须先校验身份 eg: jason 123
拔高练习(有点难度)
执行被装饰的函数 只要有一次认证成功 那么后续的校验都通过
函数:register login transfer withdraw
提示:全局变量 记录当前用户是否认证
login_a = {
'login_a': False
}
def outer(func_name):
def inner(*args,**kwargs):
global login_a
if 'login':
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
if username == 'jason' and password == '123':
login_a = True
res = func_name(*args, **kwargs)
return res
return inner
def register():
print('123')
def login():
print('321')
def transfer():
print('789')
def withdraw():
print('456')
register()
login()
transfer()
withdraw()
14.尝试编写有参函数将多种用户验证方式整合到其中
直接获取用户数据比对
数据来源于列表
数据来源于文件
info = [['jcs', '123'], ['jason', '123']]
def outer(condition):
def login(func):
def inner(*args, **kwargs):
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
if condition == '列表':
print('使用列表作为数据来源')
for i in info:
if username == i[0] and password == i[1]:
res = func(*args, **kwargs)
return res
else:
print('用户名或密码错误')
elif condition == '文件':
print('使用文件作为数据来源')
with open(r'user.txt', 'r', encoding='utf8') as f:
for i in f:
i = i.strip().split(',')
if username == i[0] and password == i[1]:
res = func(*args, **kwargs)
return res
else:
print('权限不够,无法执行')
else:
print('没有这个方式')
return inner
return login
@outer('列表')
def register():
print("登录成功")
@outer('文件')
def register():
print('登陆成功')
register()
15.尝试编写递归函数
推导指定某个人的正确年龄
eg: A B C D E 已知E是18 求A是多少
def func(n): # 定义一个函数名为func,参数为n 的函数
if n == 1: # 如果参数为1 ,返回n的值
return 18 # 将18赋值给n
else:
return 2 + func(n-1) # n不等于1, 返回依此加2
A = func(5)
print(A)
16.有下列用户数据
user_data = {
'1': {'name': 'jason', 'pwd': '123', 'access': ['1', '2', '3']},
'2': {'name': 'kevin', 'pwd': '321', 'access': ['1', '2']},
'3': {'name': 'oscar', 'pwd': '222', 'access': ['1']}
}
并有三个函数
def func1():
pass
def func2():
pass
def func3():
pass
要求:调用上述三个函数的时候需要从user_data中校验用户身份是否正确
并获取当前登录用户拥有的可执行函数功能编号即键access对应的功能编号列表
func1是1、func2是2、func3是3
并且一旦用户登录成功之后后续函数的调用不再校验用户身份
请思考如何获取函数功能编号 如何校验用户身份 如何校验权限
ps:装饰器知识 附赠:实现上述主体功能即可 其他扩展优化功能可暂且不写
user_data = {
'1': {'name': 'jason', 'pwd': '123', 'access': ['1', '2', '3']},
'2': {'name': 'kevin', 'pwd': '321', 'access': ['1', '2']},
'3': {'name': 'oscar', 'pwd': '222', 'access': ['1']}
}
is_login = {
'is_login':False,
'access_list':[]
}
def login(func_id):
def outer(func_name):
def inner(*args,**kwargs):
if is_login.get('is_login'):
access = is_login.get('access_list')
if func_id in access:
res = func_name(*args,**kwargs)
return res
else:
print('没有功能编号为%s的权限'% func_id)
id = input('请输入用户编号:').strip()
if id in user_data:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
new_data = user_data.get(id)
if username == new_data.get('name') and password == new_data.get('pwd'):
access = new_data.get('access')
is_login['is_login'] = True
is_login['access_list'] = access
if func_id in access:
res = func_name(*args,**kwargs)
return res
else:
print('你没有当前功能编号为:%s 的函数执行权限' % func_id)
else:
print('用户名或密码错误')
else:
print('用户编号%s不存在' % id)
return inner
return outer
@login('1')
def func1():
print('from func1')
@login('2')
def func2():
print('from func2')
@login('3')
def func3():
print('from func3')
func1()
func2()
func3()