模块包与学员管理系统
1、random模块
"""
random 随机模块
内置模块 直接导入就可以使用的
random模块常用方法
random.random()--> 随机生成[0,1)的数
random.randint()--> 随机生成整数[]
random.choice()--> 随机在序列取元素
random.shuffle()--> 打乱传入的容器内部顺序并返回
random.sample() --> 随机取样
random.randrange()--> 随机取整数[)
"""
import random
import time
print(random.random()) # [0,1)
time.sleep(random.random()) # 随机暂停
print(random.randint(1, 100)) # [1,100] 1和100都是能够取到的
"""验证码 6位纯数字 4个纯数字 """
li = []
for i in range(6):
every_num = str(random.randint(0, 9))
# print(every_num,type(every_num))
li.append(every_num)
# print(li)
yanzhengma = ''.join(li)
print(yanzhengma, type(yanzhengma)) # 981898 <class 'str'>
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.choice(li)) # 8
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(li) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(li) # 打乱的是列表本身
print(li) # [4, 6, 5, 1, 8, 9, 2, 7, 3]
li = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(random.sample(li, 6)) # 随机取样 要有参数 要知道你取几个 返回的是列表类型
# [0, 3, 8, 1, 2, 4]
print(random.randrange(1, 10)) # 在范围内随机取整数 [) 左闭右开# 8
2、json模块
import json
dic = {"name": "花花", "age": 18}
print(dic, type(dic)) # {'name': '花花', 'age': 18} <class 'dict'>
dic2 = {'name': '花花', 'age': 18}
print(dic2, type(dic2)) # {'name': '花花', 'age': 18} <class 'dict'>
"""
json类型的数据跟字典非常的相似
json中的数据必须使用双引号包裹。
json数据本质上也是字符串类型
'{"name":"花花","age":18}'
json.loads() --> json转为字典(适用于语句)
json.dumps() --> 字典转为json(适用于语句)
"""
# 1.dict--->str
a = "python"
b = {"city": "hunan"}
c = '{"city":"hunan"}'
d = '{"city":"hunan"}'
print(a, type(a), b, type(b), c, type(c))
# python <class 'str'> {'city': 'hunan'} <class 'dict'> {"city":"hunan"} <class 'str'>
res = str(b)
print(res, type(res)) # {'city': 'hunan'} <class 'str'>
res = json.dumps(b)
print(res, type(res)) # {"city": "hunan"} <class 'str'>
# 2.str--->dict
data = '{"age":18}'
# print(dict(data)) # 转不了报错
res2 = json.loads(data)
print(res2) # {'age': 18}
"""
json.load()--> json转为字典(适用于文件)
json.dump()--> 字典转为json(适用于文件)
"""
import json
data = {"name": "huahua"}
f = open("data.json", mode="w")
# f.write(data) # must be str, not dict 写入的必须是字符串
# 写进去
json.dump(data, f) # 将字典转换成json文件 然后写入文件
# 读取文件
f = open("data.json", mode="r")
# res = f.read()
# print(type(res), res)
# f.seek(0)
# 运行下面之前先把上面的read注释掉 因为指针在最后面了 读取不了了 或者seek到0
j_data = json.load(f) # 将json对象转换成字典
print(j_data) # {'name': 'huahua'}
print(type(j_data), j_data.get("name")) # <class 'dict'> huahua
3、模块导入
# module1.py
def printinfo1():
print('printinfo1')
def printinfo11():
print('printinfo11')
# module2.py
def printinfo2():
print('printinfo2')
def printinfo22():
print('printinfo22')
# import mypackage.module1,mypackage.module2
# from mypackage import module1,module2
# from mypackage import *
# import mypackage.module1
# mypackage.module1.printinfo1()
# mypackage.module1.printinfo11()
# import mypackage.module2
# mypackage.module2.printinfo2()
# mypackage.module2.printinfo22()
# from mypackage import module1,module2
# module1.printinfo1()
# module1.printinfo11()
# module2.printinfo2()
# module2.printinfo22()
# from mypackage.module1 import printinfo1,printinfo11
#
# printinfo1()
# printinfo11()
# 必须在`__init__.py`文件中添加__all__= [控制允许导入的模块列表]
from mypackage import *
module1.printinfo1()
module2.printinfo2()
# printinfo1
# printinfo2
# __init__.py
__all__ = ['module1', 'module2']
4、学员管理系统
# main.py
from manage import Student_Manage
# 开始运行
if __name__ == '__main__':
# 创建对象
student = Student_Manage()
# 通过对象调用某个方法
student.run()
# student.py
class Student():
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age
def __str__(self):
return f"姓名:{self.name}\t性别:{self.sex}\t年龄:{self.age}"
# manage.py
from student import Student
class Student_Manage():
# 数据仓库
def __init__(self):
self.student_list = []
# 显示功能界面
def show_menu(self):
print("======欢迎进入学员管理系统======")
print("\t---1、添加学员信息---")
print("\t---2、删除学员信息---")
print("\t---3、修改学员信息---")
print("\t---4、查看学员信息---")
print("\t---5、显示学员信息---")
print("\t---6、保存学员信息---")
print("\t-----7、退出系统-----")
# 主函数
# 主函数
def run(self):
while True:
# 显示功能菜单
self.show_menu()
number = int(input("输入对应的数字实现对应功能:"))
if number == 1:
self.add_student()
elif number == 2:
self.del_student()
elif number == 3:
self.modify_student()
elif number == 4:
self.search_student()
elif number == 5:
self.show_student()
elif number == 6:
self.save_student()
elif number == 7:
print("欢迎下次使用")
break
# 添加信息
def add_student(self):
name = input("请输入姓名:")
sex = input("请输入性别:")
age = input("请输入年龄:")
# 创建一个学生对象
student = Student(name, sex, age) # 实例化对象
print(student)
# 将创建的学生对象传入列表中
self.student_list.append(student)
# 删除信息
def del_student(self):
stu_name = input("请输入你要删除的学员姓名:")
for data in self.student_list:
if data.name == stu_name:
print(data.name, "---删除成功")
self.student_list.remove(data)
break
else:
print("当前学员不存在")
# 修改信息
def modify_student(self):
stu_name = input("请输入你要修改的学员姓名:")
for data in self.student_list:
if data.name == stu_name:
data.name = input("请输入姓名:")
data.sex = input("请输入性别:")
data.age = input("请输入年龄:")
print(f"姓名:{data.name},性别:{data.sex},年龄:{data.age}")
break
else:
print("学员不存在")
# 查找信息
def search_student(self):
stu_name = input("请输入你要查找的学员姓名:")
for data in self.student_list:
if data.name == stu_name:
print(f"姓名:{data.name},性别:{data.sex},年龄:{data.age}")
# 显示信息
def show_student(self):
for data in self.student_list:
print(f"姓名:{data.name},性别:{data.sex},年龄:{data.age}")
# 保存信息 重要
def save_student(self):
for data in self.student_list:
data_stu = f"姓名:{data.name},性别:{data.sex},年龄:{data.age}"
with open("student.txt", "a", encoding="utf-8") as f:
f.write(data_stu + "\n")
代码部分运行结果:
5、练习:
编写程序,生成一个包含20个随机整数的列表,
然后对其中偶数下标的元素进行降序排列,
奇数下标的元素不变。 (提示:使用切片。)
import random
# 方法1
li = [random.randint(1, 100) for i in range(20)]
print(li)
li1 = li[::2]
li2 = li[1::2]
li1.sort(reverse=True)
new_li = [''] * len(li)
new_li[::2] = li1
new_li[1::2] = li2
print(new_li)
# 方法2
li = [random.randint(1, 100) for i in range(20)]
print(li)
li1 = sorted(li[::2], reverse=True)
for i, j in enumerate(range(0, len(li), 2)):
li[j] = li1[i]
print(li)
运行结果: