stu_list为学生信息列表,内容如下
{'id': 118, 'name': '李四', 'english': 90, 'python': 80, 'java': 88}
{'id': 111, 'name': '李二', 'english': 100, 'python': 100, 'java': 100}
{'id': 114, 'name': '王三', 'english': 90, 'python': 90, 'java': 80}
现,需要实现删除信息的功能
def delete():
file=open('stu_list.txt','r',encoding='utf-8')
lst=file.readlines()
file.close()
dein=input('请输入学生姓名')
for info in lst:
d=dict(eval(info))
if d['name']==dein:
print(d)
answer=input('请问确定需要删除吗')
if answer=='y' or answer=='Y':
lst.remove(info)
file=open('stu_list.txt','w',encoding='utf-8')
file.writelines(lst)
file.close()
print('删除完毕')
else:
print('返回')
delete()
else:
print('学生不存在,重新输入')
delete()
输出d失败,
但是将d下方以后的注释掉即可正常输出
两个问题:
1、for中该 else 子句在循环正常完成时执行,这意味着循环没有遇到任何 break 语句。for是正常运行的,自然输出else答案
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print( n, 'equals', x, '*', n/x)
break
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
给出官方示例,自己运行一下看看,for正常运行完了就输出else,被break掉的就不会输出。
2、
l = [1,2,3]
for i in l:
l.remove(i)
print(l)
[2, 3]
[2]
能看出来区别么,你删了1的话,2就在1的位置上了,接下来取得数就成了3!
所以你可以选择定义两个列表