私はPythonで "Choose Your Adventure"ゲームを作っています。以下のコードで見ているように、私は一時的にunnamedMethodと呼ばれるメソッドを持っています。このメソッドには、メソッド、m、文字列、ans1;もう1つの文字列ans2。Python - パラメータとしてメソッドの問題?
このメソッドは、mから派生したユーザーの入力を処理し、2つの単語のいずれかに等しいかどうかを確認するために使用されます。どちらかの単語と等しくなければ、単純なエラーメッセージ( "有効な応答を提出してください")を出力し、メソッドmをもう一度呼び出す必要があります。しかし、私は現在のコードで "str is not callable"というエラーメッセージを受け取ります。私のコードが正常に動作している場合
がclass player:
def __init__(self, n):
self.name = n
self.inventory = []
self.health = 10.0
def getName(self):
return self.name
def printName(self):
print("Your name is: " + self.name)
def printInventory(self):
print(self.inventory)
class game:
def __init__(self):
print("Welcome to Choose Your Adventure.")
name = input("Please enter your name to begin: ")
p = player(name)
def intro(self):
print("\n.....\n")
ans = input("You awaken in a field skirted by a dense pine forest.\n" +
"A rickety barn and its adjoining house lie a few hundred\n" +
"feet ahead of you. Do you enter the forest or explore the\n" +
"property? Type 'property' or 'forest': ")
return ans
def property(self):
print("\n.....\n")
print("You walked towards the property")
def forest(self):
print("\n.....\n")
print("You walked into the forest")
###
def unnamedMethod(self, m, ans1, ans2):
ans = m() #where the error message occurs
while ans.lower() != ans1 and ans.lower() != ans2:
print("Please submit a valid response.")
print("\n.....\n\n")
ans = m()
if ans.lower() == ans1:
return ans1
else:
return ans2
class run:
def __init__(self):
g = game()
print(g.unnamedMethod(g.intro(), "property", "forest"))
r = run()
、それはそれは、ユーザ入力「プロパティ」またはまでイントロ()ループスルー「森」と印刷されます。ここでは
は、これまでの私のプロジェクトであります対応する単語。誰かが私のコードで問題を見つけるのを助けることができたら、私は大いに感謝します。あなたはm
が呼び出し可能として扱われることをしたい場合は、合格を検討
ans = m
:
'g.intro()'ではなく 'g.intro'だけです。メソッドをパラメータとして渡し、呼び出しておらず、戻り値(文字列)をパラメータとして渡す必要があります。 – thebjorn
メソッドをパラメータとして渡すのではなく、文字列を渡しています。 –