Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让一个函数提供另一个函数的输入_Python_Python 3.x - Fatal编程技术网

Python 如何让一个函数提供另一个函数的输入

Python 如何让一个函数提供另一个函数的输入,python,python-3.x,Python,Python 3.x,我正在制作一个hangman游戏,并测试不同的拣信算法的性能,但要做到这一点,猜测算法函数必须将一个字母输入hangman函数的输入“选择一个字母” 如何使函数检测到另一个函数何时正在等待输入?不要使用输入函数,而是编写一个自定义函数,从正在使用的任何算法中提取输出。看起来是这样的: user_input = algo_obj.get_input(game_state) 在这种情况下,如果存在算法/生成器的当前状态,algou_obj将是一个存储该状态的对象,否则您可以正常调用该函数。游戏状态

我正在制作一个hangman游戏,并测试不同的拣信算法的性能,但要做到这一点,猜测算法函数必须将一个字母输入hangman函数的输入“选择一个字母”

如何使函数检测到另一个函数何时正在等待输入?

不要使用输入函数,而是编写一个自定义函数,从正在使用的任何算法中提取输出。看起来是这样的:

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的一个相当随意的用户,我从中学到了很多有用的东西,非常感谢!