*args
の機能を理解しようとするコードを作成しましたが、counter
変数をリセットしないと問題が発生しています。ルーピングオーバー* argsカウンタをリセット
4番目の項目の後に、ナンバリングは0にリセットされますが、私はそれをargsを越えて継続します。
lst = ['apple', 'banana', 'orange', 'lemon']
lst2 = ['apple2', 'banana2', 'orange2', 'lemon2']
lst3 = ['apple3', 'banana3', 'orange3', 'lemon3']
def generateMenu(*args):
counter = 0
for i in args:
def recurse(l, counter):
for i in l:
counter += 1
if isinstance(i, (list, tuple)):
recurse(i, counter)
else:
print("{}. {}.".format(counter, i))
recurse(i, counter)
generateMenu(lst, lst2, lst3)
出力:
1. apple.
2. banana.
3. orange.
4. lemon.
1. apple2.
2. banana2.
3. orange2.
4. lemon2.
1. apple3.
2. banana3.
3. orange3.
4. lemon3.
あなたは再帰の第2引数を決して与えません。私はそれが間違いだと思うだろう。また、カウンター変数をシャドーイングしているという事実は、おそらくオフの動作を引き起こしています。パラメータと変数を異なる名前にします。 – Carcigenicate
グローバルカウンタの使用はどうですか?最初にあなたの関数 'counter = 0'の外側を定義し、関数の最初の行を' global counter'に置き換えます。 – Mikael
@Carcigenicate He *は 'recurse'の* outer *呼び出しでcounterを渡します。 *インナー* 1。そして、内部の場合は、与えられた入力で決して引き起こされることはありません。 – deceze