Python之循环的使用
程序员文章站
2022-05-04 10:15:41
最近在学Python,尝试着用for和while循环做一个简单的学生管理系统,现在遇到的问题是没法限定输入的数据类型和从for循环中跳出 第一个限定是:如果没有没有输入整数,程序直接报错,在其中使用了转换,代码18行 第二个跳出for循环:目的是要对录入的信息进行一个初步的判断,确保关键信息不重复 ......
最近在学Python,尝试着用for和while循环做一个简单的学生管理系统,现在遇到的问题是没法限定输入的数据类型和从for循环中跳出
第一个限定是:如果没有没有输入整数,程序直接报错,在其中使用了转换,代码18行
第二个跳出for循环:目的是要对录入的信息进行一个初步的判断,确保关键信息不重复
这个管理系统,涉及的到就是先定义字典grade,再将字典grade使用append()函数添加到列表student,然后通过for循环遍历数组,将
字典取出来sname,最后对比输入的名字和字典sname中“姓名”键(key)对应的值(value),这样就做到了数据的匹配查询
1 # print absolute value of an integer 2 '''如果是将这个系统改成绩查询的,又该怎么做,字典的话如何进行叠加''' 3 4 #定义信息列表 5 6 print('欢迎进入学生成绩管理系统!\n\t************\n请查看你能进行的操作\n\t************') 7 menu = ('1.录入','2.查询','3.修改','4.删除','5.预览','6.退出') 8 orderid = (1,2,3,4,5,6) #操作的步骤选择 9 student = [] 10 a = 1 11 m = 0 12 n = 0 13 while a == 1: #目的是使操作一直在使用,循环,最后不操作退出 14 for opration in menu:# 限制输入整数 15 print(opration) 16 order = input('请输入序号,进行你想要的操作:') 17 '''try: 18 order = int(order) 19 except TypeError as e: 20 print('错误原因:%s' % e) 21 continue''' 22 23 24 if int(order) in orderid: 25 26 while int(order) == 1: 27 name = input('请输入学生的姓名:')# 数据录入#需要解决重复录入的问题 28 '''for stu_name in student: 29 if name == stu_name['姓名']: 30 stu_id = input('该学生已经录入信息,请确认是否重复录入,并比较学号') 31 if stu_id == stu_name['学号']: 32 print('重复录入!请重新输入学生信息') 33 continue''' 34 35 id = input('请输入学生号:') 36 classid = input('请输入学生的班级:') 37 Chinese = float(input('请输入语文成绩:')) 38 Math = float(input('请输入数学成绩:')) 39 English = float(input('请输入英语成绩:')) 40 Physical = float(input('请输入物理成绩:')) 41 Chemistry = float(input('请输入化学成绩:')) 42 Biological = float(input('请输入生物成绩:')) 43 Score = round((Chinese * 3 + Math * 3 + English * 3 + Physical * 2 + Chemistry * 2 + Biological * 2) / 15,2) 44 45 #定义一个新的字典 46 grade = {} 47 grade['姓名'] = name 48 grade['学号'] = id 49 grade['班级'] = classid 50 grade['语文'] = Chinese 51 grade['数学'] = Math 52 grade['英语'] = English 53 grade['物理'] = Physical 54 grade['化学'] = Chemistry 55 grade['生物'] = Biological 56 grade['加权总分'] = Score 57 58 # 将一个字典,添加到列表中 59 student.append(grade) 60 61 print('你已经成功录入了一份信息,继续录入请按Y,返回菜单请按N') 62 exit = input() 63 if exit == 'y': 64 continue 65 else: 66 break 67 68 69 while int(order) == 2: 70 71 name = input("请输入你要查找的学生的姓名:") 72 n += 1 73 if n > 2: 74 print('你已经重复输错三次,请确认姓名再进行查询操作') 75 n = 0 76 continue 77 78 t_name = 0#输入正确标志位 79 80 for sname in student: 81 if name == sname['姓名']: 82 print('该同学的记录是:',sname) 83 #print('%s同学的记录是:学号%s 班级%s 语文%.2f 数学%.2f 英语%.2f 物理%.2f 化学%.2f 生物%.2f ' 84 #'加权总分%.2f' % (name,sname['学号'],sname['班级'],sname['语文'],sname['数学'],sname['物理'],sname['化学'],sname['生物'],sname['加权总分'])) 85 86 t_name = 1 87 88 break 89 90 if t_name == 0: 91 exit = input('查询错误,请重确认要查询的学生姓名,退回主菜单请按N') 92 if exit == 'n': 93 break 94 continue 95 else: 96 exit = input('查询成功,输入名字继续查询,退回主菜单请按N') 97 if exit == 'n': 98 break 99 continue 100 101 102 while int(order) == 3: 103 name = input("请输入你要修改信息的学生的姓名:") 104 105 t_name = 0 # 输入正确标志位 106 107 for sname in student: 108 if name == sname['姓名']: 109 id = input('请输入学生号:') 110 classid = input('请输入学生的班级:') 111 Chinese = float(input('请输入语文成绩:')) 112 Math = float(input('请输入数学成绩:')) 113 English = float(input('请输入英语成绩:')) 114 Physical = float(input('请输入物理成绩:')) 115 Chemistry = float(input('请输入化学成绩:')) 116 Biological = float(input('请输入生物成绩:')) 117 Score = round( 118 (Chinese * 3 + Math * 3 + English * 3 + Physical * 2 + Chemistry * 2 + Biological * 2) / 15, 2) 119 120 grade['姓名'] = name 121 grade['学号'] = id 122 grade['班级'] = classid 123 grade['语文'] = Chinese 124 grade['数学'] = Math 125 grade['英语'] = English 126 grade['物理'] = Physical 127 grade['化学'] = Chemistry 128 grade['生物'] = Biological 129 grade['加权总分'] = Score 130 131 t_name = 1 132 break 133 134 if t_name == 0: 135 exit = input('查询错误,请重确认要修改的学生姓名,退回主菜单请按N') 136 if exit == 'n': 137 break 138 continue 139 else: 140 exit = input('查询成功,输入名字继续查询,退回主菜单请按N') 141 if exit == 'n': 142 break 143 continue 144 145 146 while int(order) == 4: 147 148 name = input("请输入你要删除信息的学生的姓名:") 149 150 t_name = 0 # 输入正确标志位 151 152 for sname in student: 153 if name == sname['姓名']: 154 student.remove(sname) 155 t_name = 1 156 break 157 if t_name == 0: 158 exit = input('查询错误,请重确认要删除的学生姓名,退回主菜单请按N') 159 if exit == 'n': 160 break 161 continue 162 else: 163 exit = input('查询成功,输入名字继续删除,退回主菜单请按N') 164 if exit == 'n': 165 break 166 continue 167 168 while int(order) == 5: 169 if len(student) == 0: 170 print('系统里面没有数据,请录数据') 171 break 172 else: 173 for s_name in student: 174 print(s_name) 175 exit = input('预览成功!按任意键返回主菜单\n') 176 break 177 178 if int(order) == 6: 179 print('感谢你的使用,再见!\n') 180 break 181 182 183 else: 184 print('输入有误,请输入序号1~6') 185 m += 1 186 if m > 2: 187 print('你已经重复输错三次,结束本次操作') 188 break 189 continue
下一篇: 字符串和正则表达式(8)