2016-06-29 3 views
-1

Я пытаюсь получить несколько строк алфавита, но он не работает. На данный момент у меня есть 1 ряд, но это не сработает.Python | как печатать несколько строк алфавита?

Что я после когда алфавит получает от a к z, это добавит еще одно письмо на до aa к zz и дальше и дальше.

Как просил, код, который я в настоящее время выглядит следующим образом:

import string 

alphabets = string.ascii_lowercase 
for i in alphabets: 
    print(i) 
    alphabets = string.ascii_lowercase 
    if i == 'z': 
     for b in alphabets: 
      print('{}{}'.format(b, b)) 
      print('{}{}'.format(b, b)) 
+1

Вы можете поделиться тем, что у вас есть? Вы должны отредактировать свой вопрос, чтобы включить то, что вы пробовали. – metatoaster

+2

Вы хотите 'aa',' ab', 'ac' ...' zz'? Или 'aa',' bb', 'cc' ...' zz'? – dansalmo

+0

Вы пытаетесь сгенерировать [перестановки] (https://docs.python.org/3.5/library/itertools.html#itertools.permutations)? Ваш вопрос очень неясен. Рассмотрим пример вывода, который вы ищете, с цифрами 1, 2, 3, 4. – dimo414

ответ

0

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

for i in range(...) #However many instances of the alphabet you want 
    for j in range(26) 
     print(chr(ord('a')+j)*i) 

EDIT: Ответ выше, дает 'A' - 'Z', а затем 'аа', 'BB', ..., 'ZZ', и т.д., что не то, что было ищут.

Вместо этого мы построим массив и перейдем через него в обратном порядке. Код, который я придумал, отчасти уродлив, но он работает. Извинения за последнюю строку в частности.

def checkArr(arr): 
    for i in arr: 
     if i != 25: 
      return True 
    return False 

arr = [] 
for i in range(5): 
    arr = [] 
    for j in range(i+1): 
     arr.append(0) 
    while(checkArr(arr)): 
     s = "" 
     for j in arr: 
      s += chr(j + ord("a")) 
     print(s) 
     index = len(arr)-1 
     while (index > 0 and arr[index] == 25): 
      arr[index] = 0 
      index -= 1 
     arr[index] += 1 
    print("z"*(i+1)) 
+0

Эй, когда я использовал ваш код, он просто использует ту же букву рядом с eachother, как aaaa, bbbb, cccc. Я был после этого, чтобы пройти через каждую строку, такую ​​как okhm pgjy, ect. Любая идея? – Jay

+0

Извините, я, должно быть, неправильно понял ваш вопрос, я подумал, что вы почему-то искали. Есть несколько способов решить это; Я отредактирую свой ответ выше. – Checkmate

Смежные вопросы