python - 无法理解为什么 IDLE gui 没有返回作者所说的应该返回的值

标签 python

我正在阅读《学习Python》一书,作者提供了这两段代码,然后他像 permute1("abc") 一样运行“abc”,当我在 IDLE 中执行此操作时,这会返回 abc 的所有排列。它返回['abc']。我不明白作者是如何说它应该返回 ['abc', 'acb' -- 等等 ] 我在这里缺少什么?

def permute1(seq):
    if not seq:
        return [seq]
    else:
        res = []
        for i in range(len(seq)):
            rest = seq[:i] + seq[i+1:]
            for x in permute1(rest):
                res.append(seq[i:i+1] + x)
            return res

def permute2(seq):
    if not seq:
        yield seq
    else:
        for i in range(len(seq)):
            rest = seq[:i] + seq[i+1:]
            for x in permute2(rest):
                yield seq[i:i+1] + x

最佳答案

看起来您在第一个 for 循环中的 return res 行中添加了额外的缩进。

这会使您的函数提前终止。在我们取消缩进后,permute1("abc") 按预期工作。

关于python - 无法理解为什么 IDLE gui 没有返回作者所说的应该返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013020/

相关文章:

python - python中的错误- 'NoneType'类型的对象没有len()

python - 获取终端输出的颜色/返回文本的颜色

python - Mac 操作系统 : How do I run a multi-line script on command line?

python - 在使用面向对象编程时,如何在 Python 中创建列表?

Python 3 如何从标准输入上的文件生成 md5 哈希?

python - Luigi : The task does not fail even if in the run() method , 我执行了一个不存在的文件

python - 只有一个线程正在启​​动 python

python - 获得对 Python 队列的索引访问的最佳方法,线程安全

python - 尝试从 jobstore 获取作业时 APScheduler python 崩溃

python - mpz 变量的算术结果是什么?