欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python之循环的使用

程序员文章站 2022-07-10 17:31:00
最近在学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