版权声明:共同努力,有不足的地方欢迎大家点出 https://blog.csdn.net/qq_42897012/article/details/82873094
之前的非函数版本 打印学生列表代码重复,如果要修改需要处处修改。while if 嵌套,代码越来越长,不容易维护。所以我们封装成函数版本。函数封装吧大问题分解成小问题
students = [{'name': '王', 'age':10, 'sex':'male'},
{'name':'李浩', 'age':12, 'sex':'female'},
{'name':'王十', 'age':12, 'sex':'male'}
]
def show_students():
"""打印学生列表"""
print('行号\t姓名\t年龄\t性别')
print('-'*50)
for i in range(0,len(students)):
stu_dict = students[i]
name = stu_dict['name']
age = stu_dict['age']
sex = stu_dict['sex']
print('{}\t\t{}\t{}\t\t{}'.format(i+1,name,age,sex))
# for index,student in enumerate(students):
# print('%s\t\t%s\t\t%s\t\t%s'%(index+1,student['name'],student['age'],student['sex']))
def add_student():
"""添加学生"""
new_name = input('请添加新姓名:')
new_age = input('请添加学生的年龄')
new_sex = input('请输入学生的性别')
new_stu = {}
new_stu['name'] = new_name
new_stu['age'] = new_age
new_stu['sex'] = new_sex
students.append(new_stu)
print('添加成功')
def update_student():
"""修改学生"""
show_students()
stu_num =input('选择要修改第几个:')
if stu_num.isdigit() and int(stu_num) in range(0,len(students)):
new_name = input('请输入修改后的姓名:')
new_age = input('请输入修改后的学生年龄')
new_sex = input('请输入修改后的学生性别')
students[int(stu_num)-1]['name'] = new_name
students[int(stu_num)-1]['age'] = new_age
students[int(stu_num)-1]['sex'] = new_sex
print('修改成功')
else:
print('输入错误')
def delete_student():
"""删除学生"""
print("""删除-请选择操作编号
1-按序号删除
2-全部删除
""")
sub_num = int(input('请选择子操作:'))
if sub_num == 1 :
show_students()
stu_num = int(input('删除第几个'))
students.pop(int(stu_num)-1)
print('删除成功')
elif sub_num ==2:
confirm = input('确认删除全部?(Y/N)')
if confirm =='Y' or confirm =='y':
students.clear()
print('删除成功')
elif confirm =='N' or confirm =='n':
print('取消删除')
else:
print('删除失败')
def main():
# 主程序 ,程序入口
while True:
print("""
1-查看学生
2-添加学生
3-修改学生
4-删除学生
0-退出
""")
num = int(input('请输入操作编号:'))
if num ==1:
show_students()
elif num ==2:
add_student()
elif num ==3:
update_student()
elif num ==4:
delete_student()
elif num ==0:
break
# main()
if __name__ == '__main__':
main()