これがばかげていると本当に残念です。このコードの結果、UnboundLocalError:代入前、特に2番目の 'for'ループの最初の行に、ローカル変数 'current_order'が参照されます。 current_orderをグローバル変数として宣言すると、エラーは修正されます。しかし、私はなぜこれをやらなければならないのかまだ分かりません。最初のforループで変数を作成していませんか? (ところで、最初のforループの条件式はTrueを返すことが保証されているので問題ありません)。 current_pitch
は、いずれかの時点でpitch.name
と等しくないので、current_order
が割り当てられることはありませんので 感謝関数内での代入前に参照されるローカル変数
def choose_pitch_from_order(current_pitch, direction, pitches_in_play,
chomp_key):
for pitch in all_pitches:
if current_pitch == pitch.name:
current_order = pitch.order
for i in current_order:
for pitch in pitches_in_play:
if pitch.index == i:
next_set = pitch
pitches_in_play.remove(next_set)
return (next_set, direction, chomp_key)
'current_pitch == pitch.name'が' True'に評価されない場合はどうなりますか? –
@JonathonReinhart彼はそれは決して起こり得ないと主張する。 – Barmar
...または 'all_pitches'が空である場合。 –