学生信息存储[1] 8月12日

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) #打印表格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值