mhk_CYE_demo 2022-04-12 17:56 采纳率: 50%
浏览 21
已结题

请各位看一下,到底什么原因,得不到想要的结果

问题遇到的现象和发生背景

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()

运行结果及报错内容

img

我的解答思路和尝试过的方法

输出d失败,
但是将d下方以后的注释掉即可正常输出

img

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • Love And Program 人工智能领域新星创作者 2022-04-12 18:23
    关注

    两个问题:
    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!
    所以你可以选择定义两个列表

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 4月12日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效