私は Python を使い始めて約 4 週間になりますが、とても気に入っています。研究室のパートナーと一緒に研究室の課題を終えたところですが、ボーイフレンドが夢中になっている Warhammer というゲーム用の小さな Python プログラムを作成するというランダムなインスピレーションを得ました。
私はかなりうまく機能する基本的なものを作成しましたが、高度なプログラムでは少し問題があります.
高度なプログラムの機能:
ゲームのポイント数を入力します
すべてのグレイ ナイト HQ、部隊などのリストをセクションごとに表示します (最初にすべての HQ、次にエリートなど)。
セクションごとに、名前の横に数字を入力して、必要なユニットを選択します
プログラムは、各セクションの小計を表示します。
プログラムは、最後に結合されたすべてのセクションの合計を提供します。
プログラムは、使用する残りのポイント数を示します。
グレイ ナイツの HQ の 1 つについては、それぞれ 40 ポイントで最大 5 つのモデルを選択できます。このプログラムでは、(print コマンドを使用して) モデルを一覧表示し、各番号に対応する if elif ステートメントを作成します。問題が発生しているコードのセクションは次のとおりです。
def inputHQ():
print
print
print 'Select your HQ by entering the number beside their name. Example "1", "2", "3".'
print
print '1. Lord Kaldor Draiog - 275 points'
print '2. Grand Master Mordrak - 200 points'
print '3. Ghost Knights - 40 points per model'
greyKnightHQ = input('What HQ do you want? Use the number beside the modle, no periods: ')
if greyKnightHQ == 1:
greyKnightHQ = 275
elif greyKnightHQ == 2:
greyKnightHQ = 200
elif greyKnightHQ == 3:
greyKnightGhostKnight = input('How many Ghost Knights would you like? Up to 5: ')
def calcGreyKnightGhostKnight():
greyKnightGhostKnightTotal = greyKnightGhostKnight * 40
greyKnightHQ = greyKnightGhostKnightTotal
return greyKnightHQ
Geany で実行すると、次のエラーが発生します。
Traceback (most recent call last):
File "warhammer-point-calculator-advanced.py", line 96, in <module>
main()
File "warhammer-point-calculator-advanced.py", line 13, in main
greyKnightHQ = inputHQ()
File "warhammer-point-calculator-advanced.py", line 48, in inputHQ
greyKnightHQ = greyKnightGhostKnightTotal
NameError: global name 'greyKnightGhostKnightTotal' is not defined
これらの関数のドキュメントの上部にある私の定義は次のとおりです。
greyKnightHQ = inputHQ()
greyKnightGhostKnightTotal = calcGreyKnightGhostKnight(greyKnightHQ)
私の主な 2 つの質問は次のとおりです。1. Python の if else ステートメント内でモジュールを定義できますか? もしそうなら、私はそれを正しくやっていますか?2. calcGreyKnightGhostKnightTotal モジュールを if else ステートメントの外側に作成し、必要なときに呼び出すだけにすることはできますか?それ以外の場合は、プログラムの残りの部分を台無しにしないように 0 を掛けますか?