为了账号安全,请及时绑定邮箱和手机立即绑定

用户重新输入退出菜单时会产生错误

用户重新输入退出菜单时会产生错误

汪汪一只猫 2021-04-09 18:15:05
我对Python还是很陌生,并且在我前进的过程中仍在寻找问题。我有一个程序,在编写过程中我一直在完善自己的程序,并且在调试过程中遇到问题,我似乎无法自行解决,因此我想看看是否有人建议。当我运行该menu()函数然后选择'a'调用该函数的时候thankyou()(注意:我离开了其他函数,不会menu()引发错误,但我只是回头调用了该函数,因为它会变成一个更长,更麻烦的帖子,那么多的代码); 当我打电话给thankyou()我时,输入一个新名称或现有名称,然后到达要设置捐赠金额的位置(它也可以接受'Q'或'q'退出menu()),如果我进入'q'并返回菜单,然后返回到thankyou()函数,然后选择捐赠后第一次选择的名称(无论它是新创建的还是已存在于预组装词典中)征集部分并输入数字条目,我得到以下错误:Traceback (most recent call last):  File "C:/FILEPATH.py", line 305, in <module>    menu()  # Program starts here  File "C:/FILEPATH.py", line 64, in menu    switch_function.get(usr_sel)()  # get user entry from dict  File "C:/FILEPATH.py", line 113, in thankyou    list(donor_dict.values())[get_index][1])  # current amt/ var from dict{[val]}IndexError: list index out of range我试图了解这里发生的事情,以便找出解决方法。是否有人对导致这种情况发生的原因以及如何解决这一问题有任何想法?谢谢。
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

实际上,仅当您输入新的捐助者名称时,才会发生此错误。当用户输入新的捐赠者名称然后按q放弃捐赠时,您已经用just初始化了新的捐赠者条目pair = {key: [key]},而实际上每个条目都将在列表中包含4个项目,而不仅仅是该人的名字。

因此,当用户下次输入相同的名称并继续输入捐赠金额时,您的代码current_donations = int((donor_dict.values())[get_index][1])无法在列表中找到该捐赠者的第二项,这应该是当前捐赠金额。

要解决此问题,只需更改pair = {key: [key]}pair = {key: [key, 0, 0, 0]}即可正确初始化新条目的列表。


查看完整回答
反对 回复 2021-04-20
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信