学生管理系统
# 定义功能界面函数
def info_print():
print('--------------请选择功能--------------')
print('1、添加学员')
print('2、删除学员')
print('3、修改学员')
print('4、查询学员')
print('5、显示所有学员')
print('6、退出系统')
print('-' * 20)
# 等待存储所有学员的信息
info = []
# 判断学生是否在info数组中
def findStu(stuName):
for stu in info:
if stuName == stu['name']: # 用户存在
return True
else: # 用户不存在
return False
# 添加学员信息的函数
def add_info():
"""添加学员函数"""
# 1. 用户输入:学号、姓名、手机号
new_id = input('请输入学号:')
new_name = input('请输入姓名:')
new_tel = input('请输入手机号:')
# 2. 判断是否添加这个学员:如果学员姓名已经存在报错提示;如果姓名不存在添加数据
global info
# 2.1 不允许姓名重复:判断用户输入的姓名 和 列表里面字典的name对应的值 相等 提示
if not findStu(new_name):
# 2.2 如果输入的姓名不存在,添加数据:准备空字典,字典新增数据,列表追加字典
info_dict = {}
# 字典新增数据
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
# print(info_dict)
# 列表追加字典
info.append(info_dict)
print(info)
# 删除学员
def del_info():
"""删除学员"""
# 1. 用户输入要删除的学员的姓名
del_name = input('请输入要删除的学员的姓名:')
# 2. 判断学员是否存在:存在则删除;不存在提示
# 2.1 声明info是全局变量
global info
# 2.2 遍历列表
if findStu(del_name):
# 2.3 判断学员是否存在:存在执行删除(列表里面的字典),break:这个系统不允许重名,删除了一个后面的不需要再遍历;不存在提示
for stu in info:
if stu['name'] == del_name:
info.remove(stu)
break
else:
print("学生信息不存在")
print(info)
# 修改函数
def modify_info():
"""修改学员信息"""
# 1. 用户输入想要修改的学员您的姓名
modify_name = input('请输入要修改的学员的姓名:')
# 2. 判断学员是否存在:存在修改手机号;不存在,提示
# 2.1 声明info是全局
global info
# 2.2 遍历列表,判断输入的姓名==字典['name']
if findStu(modify_name):
# 将tel这个key修改值,并终止此循环
for stu in info:
if stu['name'] == modify_name:
stu['tel'] = input('请输入新的手机号:')
else:
# 学员不存在
print('该学员不存在')
# 3. 打印info
print(info)
# 查询学员信息函数
def search_info():
"""查询学员信息"""
# 1. 用户输入目标学员姓名
search_name = input('请输入要查询的学员的姓名:')
# 2. 检查学员是否存在:存在打印这个学员的信息;不存在则提示
# 2.1 声明info为全局
global info
# 2.2 遍历info,判断输入的学员是否存在
if findStu(search_name):
for stu in info:
if search_name == stu['name']:
# 学员存在:打印信息并终止循环
print('查询到的学员信息如下---------------')
print(f"学员的学号是{stu['id']}, 姓名是{stu['name']}, 手机号是{stu['tel']}")
break
else:
# 学员不存在的提示
print('查无此人...')
# 显示所有学员信息
def print_all():
"""显示所有学员信息"""
# 1. 打印提示字
print('学号\t姓名\t手机号')
# 2. 打印所有学员的数据
for stu in info:
print(f"{stu['id']}\t{stu['name']}\t{stu['tel']}")
# 系统功能需要循环使用,直到用户输入6,才退出系统
while True:
# 1. 显示功能界面
info_print()
# 2. 用户输入功能序号
user_num = int(input('请输入功能序号:'))
# 3. 按照用户输入的功能序号,执行不同的功能(函数)
# 如果用户输入1,执行添加;如果用户输入2,执行删除... -- 多重判断
if user_num == 1: # 添加
add_info()
elif user_num == 2: # 删除
del_info()
elif user_num == 3: # 修改
modify_info()
elif user_num == 4: # 查询
search_info()
elif user_num == 5: # 显示所有
print_all()
elif user_num == 6: # 退出系统
exit_flag = input('确定要退出吗?yes or no')
if exit_flag == 'yes':
break
else:
print('输入的功能序号有误')
随机分配办公室
# 导入随机数模块
import random
teachers = ['喜羊羊', '美羊羊', '懒羊羊', '沸羊羊',
'灰太狼', '红太狼', '黑大帅', '小灰灰', '村长'] # 定义老师
officeTemp = [[], [], []] # 定义一个临时存放分配办公室的数组
office = [] # 最后输出的办公室数组
while len(teachers) > 0: # 只要teacher数组有长度,就说明还有老师没有分配
roomNum = random.randint(0, len(officeTemp)-1) # 产生一个介于0~目前房间数之间的随机数
if len(officeTemp[roomNum]) < 3: # 判断这个房间是否满员
# 房间没满
officeTemp[roomNum].append(teachers[0]) # 将老师添加到该房间
teachers.pop(0) # 老师得到分配后就从数组中删除
# 当最后一名老师得到分配后,while循环不会进行,需要手动将临时分组全部添加到输出数组中
if len(teachers) == 0:
for arr in officeTemp:
office.append(arr)
else:
# 房间满了
office.append(officeTemp[roomNum]) # 将满了的房间添加到输出数组
officeTemp.pop(roomNum) # 从临时数组中剔除满了的房间
# 输出最后分配结果
print(office)
# print(officeTemp)
# for循环不能用,出现不可解决BUG
for name in teachers:
roomNum = random.randint(0, allRoomNum-1)
if len(officeTemp[roomNum]) < 3:
# 房间没满
officeTemp[roomNum].append(name)
else:
# 房间满了
office.append(officeTemp[roomNum])
officeTemp.pop(roomNum)
allRoomNum -= 1
文件拷贝
# 获取用户输入路径
print('文件路径以\'/\'为分隔符')
# 尝试了几下,Python在windows环境中只能使用绝对路径(除非是在与此py文件相同的文件夹)
filePath = input('请输入文件路径:')
# filePath = 'demo/demo/demo.py'
# filePath = "D:\\python5.0课程\\课件资料V5.0\\阶段1-Python核心编程\\代码\\06-文件操作\\aa\\bb\\demo.py"
# 获取文件名称
splitSign = filePath.rfind('/')
if splitSign == -1:
# 文件在当前文件夹下
fileName = filePath[:filePath.rfind(".")]
filePathShort = ''
else:
# 文件不在当前文件夹
fileName = filePath[splitSign+1:filePath.rfind(".")]
filePathShort = filePath[:splitSign]+'/'
# 获取文件后缀
fileSuffix = filePath[filePath.rfind(".")+1:]
# 构建一个新的文件名称
newFilePath = filePathShort + fileName+'_[Python备份].'+fileSuffix
# 打开文件
file = open(filePath, 'rb')
# 创建备份新文件
writeFile = open(newFilePath, 'wb')
# 向新文件写入
while True:
fileContent = file.read(1024)
if len(fileContent) == 0:
break
writeFile.write(fileContent)
# 关闭文件
file.close()
writeFile.close()