Python中的回溯[2]

Posted

技术标签:

【中文标题】Python中的回溯[2]【英文标题】:Backtracking in Python [2] 【发布时间】:2014-05-26 16:34:13 【问题描述】:

我刚刚提出了这个简单的 Python 算法,用于生成从 1 到 n 的所有可能排列,但它似乎不起作用。代码如下:

def main ():
    n = 3
    x = [0] * 4
    k = 1
    while k:
        ok = True
        while x[k] < n and ok:
            for i in range (0,k-1):
                if x[i] == x[k]:
                    ok = False
                if ok:
                    x[k] += 1
            if x[k] < n:
                if k == n:
                    print x
                else:
                    k+=1
                    x[k] = 0
            else:
                k-=1
main()

当我运行它时,什么也没有发生。你能帮我么?我也是 Python 新手

【问题讨论】:

零被视为假。 while 循环的主体不会永远运行。 编辑了代码,还是不行): 您能告诉我们您期望的输出吗? 对于 n = 3:1 2 3 [endline] 1 3 2 [endline] 2 1 3 [endline] 2 3 1 [endline] 3 1 2 [endline] 3 2 1 [endline] 【参考方案1】:

我不知道为什么这应该输出排列(它每次都会打印换行符,所以无论如何它只会打印出一列数字,即使它有效)。您确实应该使用调试器并自己进行调查。

只需将这一行放在函数的开头即可:

import pdb; pdb.set_trace()

您将能够逐步完成您的程序。这是一个问题,其中包含一些有关如何使用它的链接和提示 - Getting started with the Python Debugger pdb

如果你知道如何安装包,你可以安装ipdb然后做

import ipdb; ipdb.set_trace()

效果相同,但调试器将具有自动完成功能,并且通常会更性感一些。

祝你学业顺利!

【讨论】:

以上是关于Python中的回溯[2]的主要内容,如果未能解决你的问题,请参考以下文章

Python中的“内部异常”(带有回溯)?

递归与回溯:python列表组合问题

“自我”如何正确更新原始变量? N皇后问题中的递归/回溯(Python)

如何使用 Python 修复 Pyx 模块中的回溯错误?

有人可以帮助解释这个回溯算法中的递归吗?

一文了解贪心算法和回溯算法在前端中的应用