Ich mache ein "Wähle dein Abenteuer" -Spiel in Python. Wie Sie im folgenden Code sehen werden, habe ich eine Methode namens unnamedMethod, die drei Parameter hat: a method, m; eine Zeichenkette, ans1; und eine andere Zeichenfolge, ans2.Python - Probleme mit Methode als Parameter?
Diese Methode soll die von m abgeleitete Benutzereingabe verarbeiten und prüfen, ob sie einem von zwei Wörtern entspricht. Wenn es keinem der beiden Wörter entspricht, sollte es eine einfache Fehlermeldung ausgeben ("Bitte eine gültige Antwort senden") und die Methode m erneut aufrufen. Allerdings bekomme ich die Fehlermeldung "str ist nicht aufrufbar" mit meinem aktuellen Code.
Hier ist mein Projekt so weit:
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()
Wenn mein Code ordnungsgemäß ausgeführt wird, wird es durch Introschleife(), bis die Benutzereingaben „Eigentum“ oder „Wald“, und dann wird es druckt die entsprechendes Wort. Ich würde es sehr schätzen, wenn jemand mir helfen könnte, das Problem mit meinem Code zu finden.
nur 'g.intro', nicht' g.intro() '- Sie sollten die Methode als Parameter übergeben, nicht aufrufen und den Rückgabewert (eine Zeichenkette) als Parameter übergeben. – thebjorn
Sie übergeben keine Methode als Parameter, Sie übergeben eine Zeichenfolge. –