question1.聲明一個(gè)字典保存一個(gè)學(xué)生的信息午磁,學(xué)生信息中包括: 姓名莺戒、年齡掰烟、成績(單科)爽蝴、電話
qusetion2.聲明一個(gè)列表,在列表中保存6個(gè)學(xué)生的信息(6個(gè)題1中的字典)
a.統(tǒng)計(jì)不及格學(xué)生的個(gè)數(shù)
b.打印不及格學(xué)生的名字和對應(yīng)的成績
c.統(tǒng)計(jì)未成年學(xué)生的個(gè)數(shù)
d.打印手機(jī)尾號(hào)是8的學(xué)生的名字
e.打印最高分和對應(yīng)的學(xué)生的名字
f.將列表按學(xué)生成績從大到小排序(掙扎一下纫骑,不行就放棄)
g = (x for x in range(1, 10000))
dic_of_stu_message = {}
# 學(xué)生信息函數(shù)
def student_information():
print('=============================')
print('\t????歡迎XXX????')
print('')
print('\t??1. 添加學(xué)生')
print('\t??2. 查看學(xué)生')
print('\t???3. 修改學(xué)生信息')
print('\t???4. 刪除學(xué)生')
print('\t???5. 返回')
print('=============================')
return input('請選擇(1-5):')
# 添加學(xué)生函數(shù)
def add_student():
while True:
stu_num = 'python1902' + str(next(g)).zfill(4)
stu_id = stu_num
name = input('請輸入學(xué)生姓名:')
age = int(input('請輸入學(xué)生年齡:'))
grade = int(input('請輸入學(xué)生成績:'))
cellphone = input('請輸入學(xué)生電話:')
dic_of_stu_message[stu_num] = {'stu_id': stu_id,
'name': name,
'age': age,
'grade': grade,
'cellphone': cellphone
}
print('學(xué)生工號(hào)為:%s\t姓名:%s\t年齡:%d\t成績:%d\t電話:%s' % (dic_of_stu_message[stu_num]['stu_id'],
dic_of_stu_message[stu_num]['name'],
dic_of_stu_message[stu_num]['age'],
dic_of_stu_message[stu_num]['grade'],
dic_of_stu_message[stu_num]['cellphone'])
)
print('添加成功蝎亚!')
choice = input('是否繼續(xù)添加學(xué)生信息(yes/no):')
if choice.lower() == 'no':
break
# 查詢學(xué)生函數(shù)
def check_student():
print('=============================')
print('\t1.查看所有學(xué)生')
print('\t2.按姓名查找')
print('\t3.按學(xué)號(hào)查找')
print('\t4.返回')
return input('請選擇(1-4):')
# 冒泡排序(列表中字典-按成績排序)
def bubble_sort(lis):
length = len(lis)
for i in range(length):
for j in range(i+1, length):
if lis[i]['grade'] < lis[j]['grade']:
lis[i], lis[j] = lis[j], lis[i]
return lis
# 主程序
while True:
temp1 = student_information()
if temp1 == '1':
add_student()
continue
elif temp1 == '2':
temp2 = check_student()
if temp2 == '4':
continue
elif temp1 == '5':
break
# 創(chuàng)建學(xué)生信息列表lis_students
lis_students = []
for key in dic_of_stu_message:
lis_students.append(dic_of_stu_message[key])
print(lis_students)
# 打印學(xué)生信息列表lis_students
print('學(xué)生信息列表為:')
for index in range(len(lis_students)):
print('學(xué)生工號(hào)為:%s\t姓名:%s\t年齡:%d\t成績:%d\t電話:%s' % (lis_students[index]['stu_id'],
lis_students[index]['name'],
lis_students[index]['age'],
lis_students[index]['grade'],
lis_students[index]['cellphone'])
)
"""
列表lis_off_grades中儲(chǔ)存不及格學(xué)生學(xué)號(hào)
列表lis_minors中儲(chǔ)存未成年學(xué)生學(xué)號(hào)
列表lis_end_cellphones中儲(chǔ)存手機(jī)尾號(hào)為8的學(xué)生學(xué)號(hào)
"""
lis_off_grades = []
lis_minors = []
lis_end_cellphones = []
for index in range(len(lis_students)):
if lis_students[index]['grade'] < 60:
lis_off_grades.append(lis_students[index]['stu_id'])
if lis_students[index]['age'] < 18:
lis_minors.append(lis_students[index]['stu_id'])
if lis_students[index]['cellphone'][-1] == '8':
lis_end_cellphones.append(lis_students[index]['stu_id'])
print('a.不及格學(xué)生個(gè)數(shù)為:%d' % len(lis_off_grades)) # 打印不及格學(xué)生個(gè)數(shù)
# 打印不及格學(xué)生信息
print('b.不及格學(xué)生信息:')
for index in lis_off_grades:
print('\t姓名:%s\t成績:%d' % (dic_of_stu_message[index]['name'], dic_of_stu_message[index]['grade']))
print('c.未成年學(xué)生個(gè)數(shù)為:%d' % len(lis_minors)) # 打印未成年學(xué)生個(gè)數(shù)
# 打印手機(jī)尾號(hào)為8的學(xué)生信息
print('d.手機(jī)尾號(hào)為8的學(xué)生信息:')
for index in lis_end_cellphones:
print('\t姓名:%s\t成績:%s' % (dic_of_stu_message[index]['name'], dic_of_stu_message[index]['cellphone']))
bubble_sort(lis_students) # 列表按學(xué)生成績排序
# 求最高分有幾人
lis_sum_grade = []
for index in range(len(lis_students)):
lis_sum_grade.append(lis_students[index]['grade'])
count_high_grade = lis_sum_grade.count(lis_students[0]['grade'])
# 打印最高分學(xué)生信息
print('e.最高分學(xué)生信息:')
for index in range(count_high_grade):
print('\t姓名:%s\t成績:%d' % (lis_students[index]['name'], lis_students[index]['grade']))
# 打印排序后列表
print('f.按學(xué)生成績從大到小排序后為:')
for index in range(len(lis_students)):
print('學(xué)生工號(hào)為:%s\t姓名:%s\t年齡:%d\t成績:%d\t電話:%s' % (lis_students[index]['stu_id'],
lis_students[index]['name'],
lis_students[index]['age'],
lis_students[index]['grade'],
lis_students[index]['cellphone'])
)
print('======finish=======')
"""
=============================
????歡迎XXX????
??1. 添加學(xué)生
??2. 查看學(xué)生
???3. 修改學(xué)生信息
???4. 刪除學(xué)生
???5. 返回
=============================
請選擇(1-5):1
請輸入學(xué)生姓名:張一
請輸入學(xué)生年齡:27
請輸入學(xué)生成績:87
請輸入學(xué)生電話:13000000008
學(xué)生工號(hào)為:python19020001 姓名:張一 年齡:27 成績:87 電話:13000000008
添加成功!
是否繼續(xù)添加學(xué)生信息(yes/no):yes
請輸入學(xué)生姓名:趙二
請輸入學(xué)生年齡:17
請輸入學(xué)生成績:90
請輸入學(xué)生電話:13000000001
學(xué)生工號(hào)為:python19020002 姓名:趙二 年齡:17 成績:90 電話:13000000001
添加成功先馆!
是否繼續(xù)添加學(xué)生信息(yes/no):yes
請輸入學(xué)生姓名:錢三
請輸入學(xué)生年齡:22
請輸入學(xué)生成績:55
請輸入學(xué)生電話:13500000008
學(xué)生工號(hào)為:python19020003 姓名:錢三 年齡:22 成績:55 電話:13500000008
添加成功发框!
是否繼續(xù)添加學(xué)生信息(yes/no):yes
請輸入學(xué)生姓名:孫四
請輸入學(xué)生年齡:18
請輸入學(xué)生成績:90
請輸入學(xué)生電話:13000000003
學(xué)生工號(hào)為:python19020004 姓名:孫四 年齡:18 成績:90 電話:13000000003
添加成功!
是否繼續(xù)添加學(xué)生信息(yes/no):yes
請輸入學(xué)生姓名:李五
請輸入學(xué)生年齡:15
請輸入學(xué)生成績:46
請輸入學(xué)生電話:13000000007
學(xué)生工號(hào)為:python19020005 姓名:李五 年齡:15 成績:46 電話:13000000007
添加成功煤墙!
是否繼續(xù)添加學(xué)生信息(yes/no):yes
請輸入學(xué)生姓名:周六
請輸入學(xué)生年齡:30
請輸入學(xué)生成績:77
請輸入學(xué)生電話:13600005008
學(xué)生工號(hào)為:python19020006 姓名:周六 年齡:30 成績:77 電話:13600005008
添加成功梅惯!
是否繼續(xù)添加學(xué)生信息(yes/no):no
=============================
????歡迎XXX????
??1. 添加學(xué)生
??2. 查看學(xué)生
???3. 修改學(xué)生信息
???4. 刪除學(xué)生
???5. 返回
=============================
請選擇(1-5):5
[{'stu_id': 'python19020001', 'name': '張一', 'age': 27, 'grade': 87, 'cellphone': '13000000008'}, {'stu_id': 'python19020002', 'name': '趙二', 'age': 17, 'grade': 90, 'cellphone': '13000000001'}, {'stu_id': 'python19020003', 'name': '錢三', 'age': 22, 'grade': 55, 'cellphone': '13500000008'}, {'stu_id': 'python19020004', 'name': '孫四', 'age': 18, 'grade': 90, 'cellphone': '13000000003'}, {'stu_id': 'python19020005', 'name': '李五', 'age': 15, 'grade': 46, 'cellphone': '13000000007'}, {'stu_id': 'python19020006', 'name': '周六', 'age': 30, 'grade': 77, 'cellphone': '13600005008'}]
學(xué)生信息列表為:
學(xué)生工號(hào)為:python19020001 姓名:張一 年齡:27 成績:87 電話:13000000008
學(xué)生工號(hào)為:python19020002 姓名:趙二 年齡:17 成績:90 電話:13000000001
學(xué)生工號(hào)為:python19020003 姓名:錢三 年齡:22 成績:55 電話:13500000008
學(xué)生工號(hào)為:python19020004 姓名:孫四 年齡:18 成績:90 電話:13000000003
學(xué)生工號(hào)為:python19020005 姓名:李五 年齡:15 成績:46 電話:13000000007
學(xué)生工號(hào)為:python19020006 姓名:周六 年齡:30 成績:77 電話:13600005008
a.不及格學(xué)生個(gè)數(shù)為:2
b.不及格學(xué)生信息:
姓名:錢三 成績:55
姓名:李五 成績:46
c.未成年學(xué)生個(gè)數(shù)為:2
d.手機(jī)尾號(hào)為8的學(xué)生信息:
姓名:張一 成績:13000000008
姓名:錢三 成績:13500000008
姓名:周六 成績:13600005008
e.最高分學(xué)生信息:
姓名:趙二 成績:90
姓名:孫四 成績:90
f.按學(xué)生成績從大到小排序后為:
學(xué)生工號(hào)為:python19020002 姓名:趙二 年齡:17 成績:90 電話:13000000001
學(xué)生工號(hào)為:python19020004 姓名:孫四 年齡:18 成績:90 電話:13000000003
學(xué)生工號(hào)為:python19020001 姓名:張一 年齡:27 成績:87 電話:13000000008
學(xué)生工號(hào)為:python19020006 姓名:周六 年齡:30 成績:77 電話:13600005008
學(xué)生工號(hào)為:python19020003 姓名:錢三 年齡:22 成績:55 電話:13500000008
學(xué)生工號(hào)為:python19020005 姓名:李五 年齡:15 成績:46 電話:13000000007
======finish=======
"""
question3.用三個(gè)列表表示三門學(xué)科的選課學(xué)生姓名(一個(gè)學(xué)生可以同時(shí)選多門課)
a. 求選課學(xué)生總共有多少人
b. 求只選了第一個(gè)學(xué)科的人的數(shù)量和對應(yīng)的名字
c. 求只選了一門學(xué)科的學(xué)生的數(shù)量和對應(yīng)的名字
d. 求只選了兩門學(xué)科的學(xué)生的數(shù)量和對應(yīng)的名字
e. 求選了三門學(xué)生的學(xué)生的數(shù)量和對應(yīng)的名字
sociology = ['趙一', '錢二', '孫三', '李四', '周五']
philosophy = ['孫三', '李四', '周五', '吳六', '鄭七']
psychology = ['周五', '吳六', '鄭七', '王八']
# 打印選擇社會(huì)學(xué)的學(xué)生
print('選擇社會(huì)學(xué)的學(xué)生有:', end=' ')
for value in sociology:
print(value, end=" ")
print('')
# 打印選擇哲學(xué)的學(xué)生
print('選擇哲學(xué)的學(xué)生有:', end=' ')
for value in philosophy:
print(value, end=" ")
print('')
# 打印選擇心理學(xué)的學(xué)生
print('選擇心理學(xué)的學(xué)生有:', end=' ')
for value in psychology:
print(value, end=" ")
print('')
print('==========================================')
print('a.選課學(xué)生總?cè)藬?shù)為:', len(set(sociology) | set(philosophy) | set(psychology)))
only_sociology = set(sociology) - set(philosophy) - set(psychology)
print('b.只選了社會(huì)學(xué)的學(xué)生人數(shù)為%d,分別為:' % len(only_sociology), end='')
for value in only_sociology:
print(value, end=' ')
print('')
only_one_subject = (set(sociology) ^ set(philosophy)) - set(psychology)
print('c.只選了一科的學(xué)生人數(shù)為%d仿野,分別為:' % len(only_one_subject), end='')
for value in only_one_subject:
print(value, end=' ')
print('')
all_subject = set(sociology) & set(philosophy) & set(psychology)
only_two_subject = ((set(sociology) & set(philosophy)) | (set(philosophy) & set(psychology))) - all_subject
print('d.只選了兩科的學(xué)生人數(shù)為%d铣减,分別為:' % len(only_two_subject), end='')
for value in only_two_subject:
print(value, end=' ')
print('')
print('e.三科全選的學(xué)生人數(shù)為%d,分別為:' % len(all_subject), end='')
for value in all_subject:
print(value, end=' ')
print('')
"""
選擇社會(huì)學(xué)的學(xué)生有: 趙一 錢二 孫三 李四 周五
選擇哲學(xué)的學(xué)生有: 孫三 李四 周五 吳六 鄭七
選擇心理學(xué)的學(xué)生有: 周五 吳六 鄭七 王八
==========================================
a.選課學(xué)生總?cè)藬?shù)為: 8
b.只選了社會(huì)學(xué)的學(xué)生人數(shù)為2脚作,分別為:趙一 錢二
c.只選了一科的學(xué)生人數(shù)為2葫哗,分別為:趙一 錢二
d.只選了兩科的學(xué)生人數(shù)為4,分別為:鄭七 李四 孫三 吳六
e.三科全選的學(xué)生人數(shù)為1球涛,分別為:周五
"""