1. 程式人生 > >學生資訊儲存[1] 8月12日

學生資訊儲存[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) #打印表格