0

私は初心者のプログラマーで、zedshaw のLearn Python The Hard Wayコースを修了していますが、演習 26 では欠陥のあるコードが与えられているので、それをデバッグできます。コードは Python 2.x を使用して作成されましたが、学習できるように Python 3 で書き直しました。

次のエラーが発生します。

Traceback (most recent call last):
  File "/home/omar/PycharmProjects/Python_The_Hardway/ex26_Quiz.py", line 76, in <module>
    print("We'd have {} beans, {} jars, and {} crates".format(secret_formula(start_point)))
IndexError: tuple index out of range

これが私のコードです:リンク

元のコード:リンク(これは演習ファイルです)

だから私の質問は:

  • 終了コード 1 で終了するのはなぜですか?
  • コードの実行を継続しないのはなぜですか?
  • Python 3 を使用してどのように書き直すことができますか?

ありがとうございました

4

3 に答える 3

4

このsecret_formulaメソッドはタプルを返すため、基本的.format()に単一の引数 (タプル) で呼び出しています。*の前にa を置いてみてくださいsecret_formula():

print("We'd have {} beans, {} jars, and {} crates".format(*secret_formula(start_point)))

これにより、タプルが個別の引数として扱われ、修正されるはずです。

于 2012-11-02T05:01:16.033 に答える
1

終了コード 1 で終了するのはなぜですか?

エラーが発生するためです。

コードの実行を続行しないのはなぜですか?

エラーが発生するためです。

Python 3 を使用してどのように書き直すことができますか?

元の Python 2 コードは次のようになります。

print "We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_pont

その Python 3 バージョンは次のとおりです。

print("We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_pont)

print-statement は関数になったので、出力する内容を括弧で囲みましたprint()

さて、このコードはもちろん壊れています。閉じ括弧start_pointがなく、つづりが間違っているからです。したがって、実際には次のようになります。

print("We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point))

.format()古いフォーマットの代わりに新しいフォーマットに移行する場合は、次の%ようになります。

print("We'd have {:d} beans, {:d} jars, and {:d} crabapples.".format(*secret_formula(start_point))

しかし、それは必要ではありません。

于 2012-11-02T09:20:07.417 に答える