- 需求
- 问题一
- 问题二
- 问题三
- 问题四
需求
1、写一个程序,任意输入n个学生的信息,形成字典后存于列表中。学生的信息包括:姓名(字符串),年龄(整数),成绩(整数);循环输入学生信息,直到输入学生姓名为空时结束输入,最后形成字典列表:L=[{‘name’:‘xiaozhang’,‘age’:‘20’,‘score’:‘50’},{‘name’:‘xiaoli’,‘age’:‘21’,‘score’:‘18’},{‘name’:‘xiaowang’,‘age’:‘19’,‘score’:‘56’},…]
2、将得到的学生信息格式化输出:
+----------+-----+-------+
| Name | Age | Score |
+----------+-----+-------+
| lisi | 23 | 435 |
| zhangsan | 39 | 54 |
+----------+-----+-------+
3、可以修改和删除学生成绩
4、实现打印菜单,并根据提示选择对应的操作
问题一
问题分析
- 循环输入学生信息
- 输入的信息形成字典
- 形成的字典存到列表中
- 字典中需要有姓名、年龄、成绩
- 学生姓名为空时结束输入
#创建数组
student=[]
#定义循环控制值
s=True
while s:
#创建循环清空的字典
dict = {}
a = input("请输入学生姓名:")
#判断名称是否为空,为空则中断循环
if a=='':
break
dict['name']=a
b = input("请输入学生年龄:")
dict['age']=b
c = input('请输入学生成绩:')
dict['score']=c
#将字典添加至列表中
student.append(dict)
print(student)
问题二
问题分析
- 表格输出(使用第三方库prettytable)
- 将方案一的列表中的字典按行添加数据
import prettytable as pt
#定义表
tb = pt.PrettyTable()
#定义表格头
tb.field_names = ['Name', 'Age', 'Score']
#循环将列表中的值分配给循环清空的sum空列表,最后将数据添加到表格中
for i in range(len(student)):
sum=[]
sum.append(student[i]['name'])
sum.append(student[i]['age'])
sum.append(student[i]['score'])
# 按行添加数据
tb.add_row(sum)
print(tb)
说是 GitHub有详细示例说明,但我没找到
问题三
问就是直接修改和删除
#修改成绩
def alter():
if len(student) == 0:
print('请先添加学生信息\n=================')
else:
b = input('请问要修改哪一个学生的成绩:')
for i in range(len(student)):
if student[i]['name'] == b:
student[i]['score']= input('请输入要修改的值:')
print('修改成功')
#删除成绩
def delete():
if len(student) == 0:
print('请先添加学生信息\n=================')
else:
det=input('请问要删除哪一个学生的成绩:')
for i in range(len(student)):
#if b == a[i]['name']:
if student[i]['name'] == det:
student[i]['score']=''
print('删除成功')
问题四
偷个懒
有两个方法,提示使用eval
第一个.py文件
import Demo01
print('欢迎使用学生信息系统')
print('当前为首页')
check = input('按下任意键显示菜单')
while True:
abc=input('1、添加学生信息\n2、格式化显示\n3、修改学生成绩\n4、删除学生成绩\n5、退出系统\n请输入选项:')
if abc == '1':
Demo01.everybody()
elif abc == '2':
Demo01.formtable()
elif abc == '3':
Demo01.alter()
elif abc == '4':
Demo01.delete()
elif abc == '5':
print('退出成功')
input('按下任意键关闭该窗口')
break
else:
print('请输入正确的选项')
import prettytable as pt
---------------------------------------------------------------------
第二个.py文件
# 创建数组
student = []
#1、存储形成字典并存于列表
def everybody():
while True:
# 创建循环清空的字典
dict = {}
a = input("请输入要储存的学生姓名:")
# 判断名称是否为空,为空则中断循环
if a=='':
break
dict['name']=a
b = input("请输入学生年龄:")
dict['age']=b
c = input('请输入学生成绩:')
dict['score']=c
# 将字典添加至列表中
student.append(dict)
print(student)
# 2、输出为表格形式
def formtable():
if len(student) == 0:
print('请先添加学生信息\n=================')
else:
# 创建表
tb = pt.PrettyTable()
# 定义表格头
tb.field_names = ['Name', 'Age', 'Score']
for i in range(len(student)):
sum=[]
sum.append(student[i]['name'])
sum.append(student[i]['age'])
sum.append(student[i]['score'])
# 按行添加数据
tb.add_row(sum)
print(tb)
#3、修改成绩
def alter():
if len(student) == 0:
print('请先添加学生信息\n=================')
else:
b = input('请问要修改哪一个学生的成绩:')
for i in range(len(student)):
if student[i]['name'] == b:
student[i]['score']= input('请输入要修改的值:')
print('修改成功')
#4、删除成绩
def delete():
if len(student) == 0:
print('请先添加学生信息\n=================')
else:
det=input('请问要删除哪一个学生的成绩:')
for i in range(len(student)):
#if b == a[i]['name']:
if student[i]['name'] == det:
student[i]['score']=''
print('删除成功')