我正在用Python做一个“选择你的冒险”游戏。正如您将在下面的代码中看到的,我有一个临时名为unnamedMethod的方法,它有三个参数:a method,m;一根绳子,ans1;另一根弦,ans2
这个方法应该处理来自m的用户输入,并检查它是否等于两个单词中的一个。如果两个词都不相等,那么它应该打印一条简单的错误消息(“请提交一个有效的响应”),然后再次调用方法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()
如果我的代码运行正常,它将通过intro()循环,直到用户输入“property”或“forest”,然后它将打印相应的单词。如果有人能帮我找到代码的问题,我将不胜感激
g.intro()
返回一个字符串,因此您所需要做的就是将方法的返回值作为m
传递给ans
:如果希望
m
被视为可调用的,那么可以考虑传递g.intro
:您正在使用ans=m(),试图将字符串m作为函数调用,而我认为您的意思是将ans的值设置为m的值,这可以通过代码ans=m来完成
相关问题 更多 >
编程相关推荐