1

以下のコードをもう少し扱いやすいものに変換するのに助けが必要です。whileステートメントを含めるように変更する必要があると確信しています。しかし、最後の日かそこらの間、壁に頭をぶつけてきました。近いと思います…。

for LevelItemList[1] in LevelUrlList[1]:
if LevelItemList[1][1] == "Folder":
    printFolderHeader(1,LevelItemList[1][0])
    LevelUrlList[2] = parseHTML (LevelItemList[1][2])

    for LevelItemList[2] in LevelUrlList[2]:
        if LevelItemList[2][1] == "Folder":
            printFolderHeader(2,LevelItemList[2][0])
            LevelUrlList[3] = parseHTML (LevelItemList[2][2])

            for LevelItemList[3] in LevelUrlList[3]:
                if LevelItemList[3][1] == "Folder":
                    printFolderHeader(3,LevelItemList[3][0])
                    LevelUrlList[4] = parseHTML (LevelItemList[3][2])

                    for LevelItemList[4] in LevelUrlList[4]:
                        if LevelItemList[4][1] == "Folder":
                            printFolderHeader(4,LevelItemList[4][0])
                            LevelUrlList[5] = parseHTML (LevelItemList[4][2])

                            for LevelItemList[5] in LevelUrlList[5]:
                                if LevelItemList[5][1] == "Folder":
                                    printFolderHeader(5,LevelItemList[5][0])
                                    LevelUrlList[6] = parseHTML (LevelItemList[5][2])

                                    for LevelItemList[6] in LevelUrlList[6]:
                                        printPage(6,LevelItemList[6][0])

                                    printFolderFooter(5,LevelItemList[5][0])

                                else:
                                    printPage(5,LevelItemList[5][0])
                            printFolderFooter(4,LevelItemList[4][0])                                
                        else:   
                            printPage(4,LevelItemList[4][0])
                    printFolderFooter(3,LevelItemList[3][0])

                else:
                    printPage(3,LevelItemList[3][0])
            printFolderFooter(2,LevelItemList[2][0])

        else:
            printPage(2,LevelItemList[2][0])
    printFolderFooter(1,LevelItemList[1][0])

else:
    printPage(1,LevelItemList[1][0])
4

1 に答える 1

0

コードの完全なコンテキストはありませんが、次のように減らすことができると思います。

def printTheList(LevelItemList, index):
    for item in LevelItemList:
        if item[1] == "Folder":
            printFolderHeader(index,item[0])
            printTheList(parseHTML (item[2]), index + 1) # note the + 1
            printFolderFooter(index,item[0])
        else:
            printPage(index,item[0])

# and the initial call looks like this.
printTheList(LevelUrlList[1], 1)

このコードは、コードで行っているように LevelUrlList と LevelItemList に値を実際に割り当てる必要がないことを前提としています。後でそのデータが必要になった場合は、別のデータ構造を渡して結果の値を保持することをお勧めします。

于 2012-09-28T02:20:32.600 に答える