Python递归函数不返回随机选择

2024-04-23 18:41:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用random模块在python中获得随机工作。我的职能如下:

import random

word_file = "/usr/share/dict/words"
WORDS = open(word_file).read().splitlines()


def get_random_word(max_length=None):
    word = random.choice(WORDS)
    print(word)

    if not max_length:
        return word

    if len(word) > max_length:
        get_random_word(max_length)

    return word

当我在ipython控制台中导入此函数并作为get_random_word(max_length=5)运行时,我得到以下结果:

Latasha's
Hammond's
evacuated
aviary
misconducted
airfare's
controllable
unduly
gaunt
Out[32]: "Latasha's"

正如您从输出中看到的,函数会调用自身,直到找到长度小于5的单词。但最后它返回第一个随机单词。我的功能有什么问题


Tags: 模块函数importgetreturnifrandom单词
3条回答

我认为您的代码可以工作,您根本不需要这一行return word,也不需要在print内部调用get_random_word(如果需要的话)

这是一个简单的递归错误。变量字的值不会通过递归调用保留。您必须指定返回值

word = get_random_word(max_length)

您没有在函数中指定返回值

        get_random_word(max_length)

    return word

应该是:

    if len(word) > max_length:
        word = get_random_word(max_length)

    return word

相关问题 更多 >