Python 如何让一个函数提供另一个函数的输入
我正在制作一个hangman游戏,并测试不同的拣信算法的性能,但要做到这一点,猜测算法函数必须将一个字母输入hangman函数的输入“选择一个字母” 如何使函数检测到另一个函数何时正在等待输入?不要使用输入函数,而是编写一个自定义函数,从正在使用的任何算法中提取输出。看起来是这样的:Python 如何让一个函数提供另一个函数的输入,python,python-3.x,Python,Python 3.x,我正在制作一个hangman游戏,并测试不同的拣信算法的性能,但要做到这一点,猜测算法函数必须将一个字母输入hangman函数的输入“选择一个字母” 如何使函数检测到另一个函数何时正在等待输入?不要使用输入函数,而是编写一个自定义函数,从正在使用的任何算法中提取输出。看起来是这样的: user_input = algo_obj.get_input(game_state) 在这种情况下,如果存在算法/生成器的当前状态,algou_obj将是一个存储该状态的对象,否则您可以正常调用该函数。游戏状态
user_input = algo_obj.get_input(game_state)
在这种情况下,如果存在算法/生成器的当前状态,algou_obj将是一个存储该状态的对象,否则您可以正常调用该函数。游戏状态是游戏当前状态可用字母的某种表示,即单词形式-即空格和字母
然后,您可以将用户输入提供给您的Hangman函数。这应该非常简单: 定义这两个函数。 将一个函数返回值作为参数传递给另一个函数。 这可以通过根据使用输入来完成 e、 g.定义功能 def first_功能: 输入变量=输入请输入一些数据 返回输入变量 def第二功能: printa在这里做一些计算 并使用它们: 第二个函数第一个函数 我不会说这一定是最好的方式,但它解决了你的问题。如果您想获得更详细的答案,请提供代码示例。假设您在执行hangman函数内的循环输入,您可以将其转换为屈服,并根据需要让外部函数驱动输入。在这个例子中,我有一个hangman函数,它使用yield来获取数据。现在它是一个发电机和驱动功能,可以使用next和发电机的.send方法将数据泵入其中
def hangman(chances=5):
for i in range(chances):
letter = yield "prompt"
if letter == "quit":
yield "quit"
return
print("letter", letter)
# do all the things
solved = False
if solved:
yield "solved"
yield "failed"
def command_line_prompt_hangman():
feeder = hangman()
state = next(feeder)
while state == "prompt":
state = feeder.send(input("Next letter: "))
def test():
# after years of testing the best algorithm is
test = ['a', 'b', 'c', 'd', 'e', 'f']
feeder = hangman()
assert next(feeder) == "prompt"
for count, letter in enumerate(test, 1):
state = feeder.send(letter)
if state == "solved":
print("did it in ", count, "tries")
break
if state == "failed":
print("exceeded count")
break
command_line_prompt_hangman()
test()
您在python-3.x和python-2.7中都添加了疑问。您使用的是哪个版本?你知道吗?@Brian My bad我正在使用3.6一个选项是将其作为子进程运行,并让测试代码将换行符分隔的字符压缩到其stdin中。另一个是重写hangman函数以分离输入提示。这可能会有点棘手。我实际上已经找到了“从游戏当前状态中选择下一个字母”的部分,我正在寻找一种方法来创建一个函数,该函数启动Hangman函数并反复侦听输入命令,这将提示它为字母提供最佳当前选择,然后等待下一个输入提示。在这种情况下,无论何时调用,输入都应该自动等待。基本上,您可以在每个周期开始时调用输入函数,并使用它检查是否应该继续,或者只调用并放弃结果。作为Python的一个相当随意的用户,我从中学到了很多有用的东西,非常感谢!