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]的主要内容,如果未能解决你的问题,请参考以下文章