1.(必须自己完成,项目的开始) 学生信息管理项目,输入任意个学生的姓名,年龄,成绩,每个学生的信息存入一个字典内,然后放入到列表中(每个学生需要手动输入)
如:
请输入姓名:tarena
请输入年龄:20
请输入成绩’:99
请输入姓名:name2
请输入年龄:30
请输入成绩:88
请输入姓名:<回车> 空结束输入
形成内部存储格式如下:
[{'name':'tarena','age':20,'
score':99},{'name':‘name2’,'age':30,'score':88}]
1)打印出存有学生信息的字典的列表
2)按表格形式打印出学生信息:
16 17 14
+----------------+-----------------+--------------+
| name | age | score |
+----------------+-----------------+--------------+
| tarena | 20 | 99 |
| name2 | 30 | 88 |
+----------------+-----------------+--------------+
自己的答案(只是解决了name宽度随输入数据宽度改变):
#
L=[]
i=1
max_name=4
while True:
if i%3==1:
s1=input(“请输入姓名:”)
if s1==”:
break
if max_name
print((L[0].get(‘name’,’null’)).center(max_name+8))这个是测试代码
print(“按表格形式打印出学生信息:”)
print(“+”+”-“*(max_name+8)+”+”+”-“*11+”+”+”-“*12+”+”)
print(“|”+”name”.center(max_name+8)+”|”+”age”.center(11)+”|”+”score”.center(12)+”|”)
print(“+”+”-“*(max_name+8)+”+”+”-“*11+”+”+”-“*12+”+”)
m=0
while m
录入学生信息
如果d={}写在这绑定的是两个相同的字典
while True:
n=input(‘请输入姓名:’)
if not n:????
break
a=int(input(‘请输入年龄:’))
s=int(input(‘请输入成绩’:’))
#创建一个新的字典,把学生的信息存入字典中
d={}#每一次重新创建一个字典
d[‘name’]=n
d[‘age’]=a
d[‘score’]=s
L.append(d)
下面动态的根据列表的内容打印数据
print(“+—————-+—————–+————–+”)
print(“| name | age | score |”)
print(“+—————-+—————–+————–+”)
for d in L:
n=d[‘name’]
a=d[‘age’]
s=d[‘score’]
print(‘|%s|%s|%s|’%(n.center(15),str(a).center(10),str(s).center(10)))
print(“+—————-+—————–+————–+”)
如果有中文的时候,字符数占两个,如何判断中文字符数
ord(‘啊’)>127利用此函数判断
然后根据名字长度整体长度变宽
n=”123”
print(“%10s”%n)
haha
自己总结梳理的最终版学生信息存储问题:
更改了姓名为中文的占位的问题
根据名字宽度整体长度变宽
用于找到字符串中有多少中文的函数
def get_chinese_char_count(s):
zw=0
for x in s:
if ord(x)>127:
zw+=1
return zw
正是判断的程序
L=[]
max_ming=4
while True:
n=input(“请输入姓名:”)
if not n:
break
geshu=get_chinese_char_count(n)
if max_ming<(len(n)+geshu):
max_ming=(len(n)+geshu)
a=int(input(“请输入年龄:”))
b=int(input(“请输入成绩’:”))
d={}
d[‘name’]=n
d[‘age’]=a
d[‘score’]=b
L.append(d)
print(“+”+”-“*(12+max_ming)+”+—————–+————–+”)
print(“|”+”name”.center(12+max_ming)+”| age | score |”)
print(“+”+”-“*(12+max_ming)+”+—————–+————–+”)
for d in L:
n=d[‘name’]
geshu=get_chinese_char_count(n)
a=d[‘age’]
b=d[‘score’]
#中文字符占2位
print(‘|%s|%s|%s|’%(n.center(12+max_ming-geshu),str(a).center(17),str(b).center(14)))
print(“+”+”-“*(12+max_ming)+”+—————–+————–+”)
2.改写之前的学生信息管理程序,将其改为两个函数:
def input_student():
…
def output_student(L):
…
input_student用于从键盘读取学生数据,形成列表并返回列表
output_student(L)用于将传参的列表L打印成为表格
测试代码:
L=input_student()
print(L)
output_student(L) #打印表格
最终的打印结果和今天打印结果是一样的
自己答案:
def get_chinese_char_count(s):
zw=0
for x in s:
if ord(x)>127:
zw+=1
return zw
def input_student():
L=[]
max_ming=4
while True:
n=input(“请输入姓名:”)
if not n:
break
geshu=get_chinese_char_count(n)
if max_ming<(len(n)+geshu):
max_ming=(len(n)+geshu)
a=int(input(“请输入年龄:”))
b=int(input(“请输入成绩’:”))
d={}
d[‘name’]=n
d[‘age’]=a
d[‘score’]=b
L.append(d)
return L
def output_student(L):
print(“+—————-+—————–+————–+”)
print(“| name | age | score |”)
print(“+—————-+—————–+————–+”)
for d in L:
n=d[‘name’]
geshu=get_chinese_char_count(n)
a=d[‘age’]
b=d[‘score’]
#中文字符占2位
print(‘|%s|%s|%s|’%(n.center(16-geshu),str(a).center(17),str(b).center(14)))
print(“+—————-+—————–+————–+”)
测试代码
L=input_student()
print(L)
output_student(L) #打印表格