Добавьте переменную итерации во вложенный цикл for на каждой итерации

V.Prins спросил: 14 ноября 2017 в 06:57 в: python-3.x

Я пытаюсь написать программу, которая печатает все возможные алфавитные комбинации от двух до четырех символов. Программа у меня сейчас работает просто отлично, но реализация далеко не идеальна. Это то, что есть сейчас:

# make a list that contains ascii characters A to z
ascii = list(range(65, 123))
del ascii[91 - 65 : 97 - 65] # values 91-97 aren't lettersfor c1, c2 in product(ascii, repeat=2):
    word = chr(c1) + chr(c2)
    print(word)for c1, c2, c3 in product(ascii, repeat=3):
    word = chr(c1) + chr(c2) + chr(c3)
    print(word)for c1, c2, c3, c4 in product(ascii, repeat=4):
    word = chr(c1) + chr(c2) + chr(c3) + chr(c4)
    print(word)

Я бы предпочел что-то в духе следующего. Простите, что следующий код совершенно неправильный, я пытаюсь передать дух того, что, как я думал, было бы более хорошей реализацией.

iterationvars = [c1, c2, c3, c4]for i in range(2,5):
    for iterationvars[0:i] in product(ascii, repeat=i):
        word = ??
        print(word)

Итак, у меня два вопроса:
1) как я могу изменить число переменных итераций вложенного цикла for на каждой итерации "материнского цикла"?
2) как можно word реализован так, что он динамически складывает все переменные итерации, независимо от того, сколько их на этой конкретной итерации.

Конечно, очень отличные реализации от того, что я предлагаю, также приветствуются. Большое спасибо!

0 ответов