gpt4 book ai didi

Python——方法作为参数的问题?

转载 作者:行者123 更新时间:2023-11-28 22:35:13 25 4
gpt4 key购买 nike

我正在用 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:

ans = m

如果您希望 m 被视为可调用的,请考虑传递 g.intro :

g.unnamedMethod(g.intro, "property", "forest")
...
ans = m()

关于Python——方法作为参数的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38426011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com