Python 谁能告诉我什么';这个密码怎么了?当我第11次按“重命名”(以便数字为10)时,一切都冻结了

Python 谁能告诉我什么';这个密码怎么了?当我第11次按“重命名”(以便数字为10)时,一切都冻结了,python,for-loop,tkinter,Python,For Loop,Tkinter,函数中的for循环-Click()可能会冻结整个程序,但我不知道为什么 代码: 我想要一个程序,将显示在我的列表框枚举数字,但每次数字变成10,所有其他以前的数字得到一个额外的零在他们前面,所以他们仍然是枚举。例如:0,1,2…9,10(当它达到10时,所有其他的都变成了00,01,02,03…09,10) 之所以会发生这种情况,是因为您在对原始列表进行迭代时正在修改原始列表final。此for循环导致问题 for i in final: if a == 10: r='0

函数中的for循环-Click()
可能会冻结整个程序,但我不知道为什么

代码:

我想要一个程序,将显示在我的列表框枚举数字,但每次数字变成10,所有其他以前的数字得到一个额外的零在他们前面,所以他们仍然是枚举。例如:0,1,2…9,10(当它达到10时,所有其他的都变成了00,01,02,03…09,10)


之所以会发生这种情况,是因为您在对原始列表进行迭代时正在修改原始列表
final
。此
for
循环导致问题

for i in final:
    if a == 10:
        r='0'+i
        final.append(r)
    listbox.insert(tk.END,i)
在这里,如果
a
的值为10,则循环将变成无限循环,这就是为什么所有东西都会冻结我不确定您想用这段代码做什么,但在修改原始列表的同时迭代列表的副本可能会有所帮助

像这样:

for i in final[:]:
    if a == 10:
        r='0'+i
        final.append(r)
    listbox.insert(tk.END,i)

修改循环中迭代的列表通常不是一个好主意。此外,当您无法确定代码的用途时,调试器可能是您最好的朋友。
for i in final:
    if a == 10:
        r='0'+i
        final.append(r)
    listbox.insert(tk.END,i)
for i in final[:]:
    if a == 10:
        r='0'+i
        final.append(r)
    listbox.insert(tk.END,i)