簡體   English   中英

Python回溯[2]

[英]Backtracking in Python [2]

我剛剛想出了這個簡單的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的新手

我不知道為什么要輸出排列(它每次也會打印換行符,因此無論如何它都只會打印出一列數字,即使它可以工作)。 您確實應該使用調試器並自己進行調查。

只需將此行放在函數的開頭:

import pdb; pdb.set_trace()

您將可以逐步完成程序。 這是一個帶有一些鏈接和使用技巧的問題-Python調試器pdb入門

如果您知道如何安裝軟件包,則可以安裝ipdb並執行

import ipdb; ipdb.set_trace()

達到相同的效果,但調試器將具有自動完成功能,並且通常會有點性感。

祝你學習順利!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM