Python——方法作为参数的问题?
我正在用Python制作一个选择你的冒险游戏。正如您将在下面的代码中看到的,我有一个临时名为unnamedMethod的方法,它有三个参数:一个方法,m;一个字符串,ans1;还有另一个字符串,ans2 这个方法应该处理来自m的用户输入,并检查它是否等于两个单词中的一个。如果它不等于任何一个单词,那么它应该打印一条简单的错误消息,请提交一个有效的响应。然后再次调用方法m。但是,我得到错误消息str不能用我当前的代码调用 以下是我目前的项目:Python——方法作为参数的问题?,python,methods,syntax,parameters,Python,Methods,Syntax,Parameters,我正在用Python制作一个选择你的冒险游戏。正如您将在下面的代码中看到的,我有一个临时名为unnamedMethod的方法,它有三个参数:一个方法,m;一个字符串,ans1;还有另一个字符串,ans2 这个方法应该处理来自m的用户输入,并检查它是否等于两个单词中的一个。如果它不等于任何一个单词,那么它应该打印一条简单的错误消息,请提交一个有效的响应。然后再次调用方法m。但是,我得到错误消息str不能用我当前的代码调用 以下是我目前的项目: class player: def __in
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()
如果我的代码运行正常,它将在介绍中循环,直到用户输入属性或林,然后打印相应的单词。如果有人能帮我找到代码中的问题,我将不胜感激。g.intro返回一个字符串,因此您所需要做的就是将方法的返回值作为m传递给ans:
如果你想把M当作可调用的,那么考虑通过G.Intoo代替:
您正在使用ans=m,试图将字符串m作为函数调用,而我认为您的意思是将ans的值设置为m的值,这可以通过代码ans=m来完成。只需g.intro,而不是g.intro-您应该将该方法作为参数传递,不调用它并将返回值作为参数传递。不将方法作为参数传递,而是传递字符串。
ans = m
g.unnamedMethod(g.intro, "property", "forest")
...
ans = m()