我的 if/else 语句和 EasyGUI 选择框似乎有些问题。我知道如果用户按下“取消”,它会返回“无”。我的代码总是输入“Else”语句。此外,我的第二个 For 循环似乎没有迭代。有没有更好的方法来选择我想要的对象(国家名称)?到目前为止,这是我的代码,带有调试输出。
更新:问题是我出于某种原因使用 Mac。我使用了我的电脑,它按预期工作。
据此,返回然后按下取消按钮,而不是字符串。将您的条件更改为,它应该可以工作。choicebox
None
'None'
if choice is None:
您的第二个for
循环的问题在于,它是一个迭代器,在您在第一个循环csvdict
中使用它后会耗尽。for
如果数据不多,您可以创建一个新的迭代器,或者将文件的内容存储在列表或字典中。您已经为该country
字段执行了此操作,但您似乎需要所有字段。最好的方法可能是创建名称到包含其他字段的列表的dict
映射country
,这样您就可以快速访问它们,而不必再次遍历所有国家。
// instead of your first for loop
choices = dict()
for line in csvdict:
choices[line['Country']] = line
...
// instead of your second for loop
if choice in choices:
line = choices[choice]
...