1

if/else ステートメントと EasyGUI 選択ボックスに問題があるようです。ユーザーが「キャンセル」を押すと、「なし」が返されることを知っています。私のコードは常に「Else」ステートメントに入ります。また、私の 2 番目の For ループは反復していないようです。必要なオブジェクト (国名) を選択するためのより良い方法はありますか? これまでのコードとデバッグ出力を次に示します。

更新: 問題は、私が何らかの理由で Mac を使用していたという事実でした。PC を使用しましたが、期待どおりに動作しました。

4

1 に答える 1

1

thisによると、文字列ではなく、キャンセル ボタンが押されたときにchoicebox返されます。条件をに変更すると、機能するはずです。None'None'if choice is None:

for2番目のループの問題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 に答える