2 番目の再帰問題。再帰関数の値に一意の ID を割り当てる必要があります。
各フォルダーにアイテムまたは他のフォルダーを含めることができるフォルダー構造を考えてみてください。ただし、それぞれに一意の「ID」が必要です。
Python の再帰関数ではグローバル変数を使用できないため、呼び出しごとに id をインクリメントすると考えました。しかし、私はこれ以上間違っていませんでした。次の状況を考えてください。
1 - フォルダ
2- フォルダ
3 - アイテム
4 - アイテム
2 - フォルダ
再帰の仕組みが原因で、id が 2 回割り当てられ、チェックする方法がありません。どうすればこれを行うことができますか?(私はpythonを使用しています。インクリメントする変数「uniqueid」があるたびに、エラーが発生します:
割り当て前に参照されたローカル変数「uniqueid」
) 私のコード: make_link_item は文字列を返すだけです。
def build_xml(node,depth,itemid):
#if 'Children' in node:
#print colleges
depth += 1
for child in node['Children']:
itemid += 1
print (" " * (depth - 1)) + "<item identifier=\"%s\" identifierref=\"%s\">" % (("itm" + ("%05d" % itemid)),("res" + ("%05d" % itemid)))
print (" " * depth) + "<title>%s</title>" % child['Name'].encode('utf-8')
build_xml(child,depth,itemid)
print (" " * (depth - 1)) + "</item>"
lectures = getlectures(node['Id'])
if lectures:
build_lectures(lectures,itemid,itemid)
def build_lectures(lectures,itemid,parentid):
for x in range(len(lectures)):
itemid += 1
if x % 2 == 0:
print "<item identifier=\"%s\" identifierref=\"%s\">" % (("itm" + ("%05d" % itemid)),("res" + ("%05d" % itemid)))
print "<title>" + lectures[x].encode('utf-8') + "</title>"
print "</item>"
else:
make_link_item(lectures[x-1].encode('utf-8'),lectures[x].encode('utf-8'),itemid,parentid)
ありがとう、
マット