1

我的 if/else 语句和 EasyGUI 选择框似乎有些问题。我知道如果用户按下“取消”,它会返回“无”。我的代码总是输入“Else”语句。此外,我的第二个 For 循环似乎没有迭代。有没有更好的方法来选择我想要的对象(国家名称)?到目前为止,这是我的代码,带有调试输出。

更新:问题是我出于某种原因使用 Mac。我使用了我的电脑,它按预期工作。

4

1 回答 1

1

据此,返回然后按下取消按钮,而不是字符串。将您的条件更改为,它应该可以工作。choiceboxNone'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]
    ...
于 2014-02-23T19:46:23.010 回答