linux python for循环语句,Python之for循环的使用

这篇博客介绍了一个使用Python实现的学生管理系统,包括录入、查询、修改和删除功能。作者通过字典和列表管理学生信息,并使用for循环和while循环进行数据验证,确保输入的数据类型正确且避免重复录入。此外,还展示了如何处理查询和修改操作,确保关键信息的准确性。
摘要由CSDN通过智能技术生成

最近在学Python,尝试着用for和while循环做一个简单的学生管理系统,现在遇到的问题是没法限定输入的数据类型和从for循环中跳出

第一个限定是:如果没有没有输入整数,程序直接报错,在其中使用了转换,代码18行

第二个跳出for循环:目的是要对录入的信息进行一个初步的判断,确保关键信息不重复

这个管理系统,涉及的到就是先定义字典grade,再将字典grade使用append()函数添加到列表student,然后通过for循环遍历数组,将

字典取出来sname,最后对比输入的名字和字典sname中“姓名”键(key)对应的值(value),这样就做到了数据的匹配查询

'''如果是将这个系统改成绩查询的,又该怎么做,字典的话如何进行叠加'''

#定义信息列表

print('欢迎进入学生成绩管理系统!\n\t************\n请查看你能进行的操作\n\t************')

menu = ('1.录入','2.查询','3.修改','4.删除','5.预览','6.退出')

orderid = (1,2,3,4,5,6)    #操作的步骤选择

student = []

a = 1

m = 0

n = 0

while a == 1:                        #目的是使操作一直在使用,循环,最后不操作退出

for opration in menu:

print(opration)

order = input('请输入序号,进行你想要的操作:')

'''while True:

order = input('请输入序号,进行你想要的操作:')

try:

order = int(order)

break

except:

print("pls enter number")

continue'''

#order = input('请输入序号,进行你想要的操作:')#限制输入的数据类型

if order.isdigit():

order = int(order)

else:

print('请输入正确的数字')

continue

if int(order) in orderid:

while int(order) == 1:

valid = 0

while not valid:

valid = 1

name = input('请输入学生的姓名:')# 数据录入#需要解决重复录入的问题

for stu_name in student:

if name == stu_name['姓名']:

stu_id = input('该学生已经录入信息,请确认是否重复录入,并比较学号')

if stu_id == stu_name['学号']:

print('重复录入!请录入下一个')

valid = 0

break

print('请继续接下来的信息录入!')

id = input('请输入学生号:')

classid = input('请输入学生的班级:')

Chinese = float(input('请输入语文成绩:'))

Math = float(input('请输入数学成绩:'))

English = float(input('请输入英语成绩:'))

Physical = float(input('请输入物理成绩:'))

Chemistry = float(input('请输入化学成绩:'))

Biological = float(input('请输入生物成绩:'))

Score = round((Chinese * 3 + Math * 3 + English * 3 + Physical * 2 + Chemistry * 2 + Biological * 2) / 15,2)

#定义一个新的字典

grade  = {}

grade['姓名'] = name

grade['学号'] = id

grade['班级'] = classid

grade['语文'] = Chinese

grade['数学'] = Math

grade['英语'] = English

grade['物理'] = Physical

grade['化学'] = Chemistry

grade['生物'] = Biological

grade['加权总分'] = Score

# 将一个字典,添加到列表中

student.append(grade)

print('你已经成功录入了一份信息,继续录入请按Y,返回菜单请按N')

exit = input()

if exit == 'y':

continue

else:

break

while int(order) == 2:

name = input("请输入你要查找的学生的姓名:")

n += 1

if n > 2:

print('你已经重复输错三次,请确认姓名再进行查询操作')

n = 0

continue

t_name = 0#输入正确标志位

for sname in student:

if name == sname['姓名']:

print('该同学的记录是:',sname)

#print('%s同学的记录是:学号%s 班级%s 语文%.2f 数学%.2f 英语%.2f 物理%.2f 化学%.2f 生物%.2f '

#'加权总分%.2f' % (name,sname['学号'],sname['班级'],sname['语文'],sname['数学'],sname['物理'],sname['化学'],sname['生物'],sname['加权总分']))

t_name = 1

break

if t_name == 0:

exit = input('查询错误,请重确认要查询的学生姓名,退回主菜单请按N')

if exit == 'n':

break

continue

else:

exit = input('查询成功,输入名字继续查询,退回主菜单请按N')

if exit == 'n':

break

continue

while int(order) == 3:

name = input("请输入你要修改信息的学生的姓名:")

t_name = 0  # 输入正确标志位

for sname in student:

if name == sname['姓名']:

id = input('请输入学生号:')

classid = input('请输入学生的班级:')

Chinese = float(input('请输入语文成绩:'))

Math = float(input('请输入数学成绩:'))

English = float(input('请输入英语成绩:'))

Physical = float(input('请输入物理成绩:'))

Chemistry = float(input('请输入化学成绩:'))

Biological = float(input('请输入生物成绩:'))

Score = round(

(Chinese * 3 + Math * 3 + English * 3 + Physical * 2 + Chemistry * 2 + Biological * 2) / 15, 2)

grade['姓名'] = name

grade['学号'] = id

grade['班级'] = classid

grade['语文'] = Chinese

grade['数学'] = Math

grade['英语'] = English

grade['物理'] = Physical

grade['化学'] = Chemistry

grade['生物'] = Biological

grade['加权总分'] = Score

t_name = 1

break

if t_name == 0:

exit = input('查询错误,请重确认要修改的学生姓名,退回主菜单请按N')

if exit == 'n':

break

continue

else:

exit = input('查询成功,输入名字继续查询,退回主菜单请按N')

if exit == 'n':

break

continue

while int(order) == 4:

name = input("请输入你要删除信息的学生的姓名:")

t_name = 0  # 输入正确标志位

for sname in student:

if name == sname['姓名']:

student.remove(sname)

t_name = 1

break

if t_name == 0:

exit = input('查询错误,请重确认要删除的学生姓名,退回主菜单请按N')

if exit == 'n':

break

continue

else:

exit = input('查询成功,输入名字继续删除,退回主菜单请按N')

if exit == 'n':

break

continue

while int(order) == 5:

if len(student) == 0:

print('系统里面没有数据,请录数据')

break

else:

for s_name in student:

print(s_name)

exit = input('预览成功!按任意键返回主菜单\n')

break

if int(order) == 6:

print('感谢你的使用,再见!\n')

break

else:

print('输入有误,请输入序号1~6')

m += 1

if m > 2:

print('你已经重复输错三次,结束本次操作')

break

continue

解决问题一的方式:(1)加入一个死循环,强制输入整数

while True:

order = input('请输入序号,进行你想要的操作:')

try:

order = int(order)

break

except:

print("pls enter number")

continue上一个

(2)加入一个字符串检测:isdigit()函数检测输入的字符串是不是数字,是的话返回True,否则继续上一个循环

order = input('请输入序号,进行你想要的操作:')

if order.isdigit():

order = int(order)

else:

print('请输入正确的数字')

continue

问题二,跳出for循环,在外面在套一层while循环,加入标志位

while int(order) == 1:

valid = 0

while not valid:

valid = 1

name = input('请输入学生的姓名:')# 数据录入#需要解决重复录入的问题

for stu_name in student:

if name == stu_name['姓名']:

stu_id = input('该学生已经录入信息,请确认是否重复录入,并比较学号')

if stu_id == stu_name['学号']:

print('重复录入!请录入下一个')

valid = 0

break

print('请继续接下来的信息录入!')

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值