2016-06-29 5 views
-1

アルファベットの複数の行を取得しようとしていますが、動作しません。現時点では1行ありますが動作しません。私は後だ何Python |アルファベットの複数の行を印刷するには?

はアルファベットがaからzになったら、それはzzaaまでに別の文字を追加して、上とになりますです。

要求に応じて、以下のように、私は現在持っているコードは次のとおりです。

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

[permutations](https://docs.python.org/3.5/library/itertools.html#itertools.permutations)を生成しようとしていますか?あなたの質問は非常に不明です。探している出力の例を1,2,3,4という数字で示してみましょう。 – dimo414

答えて

0

私はforループのネストされた使用することをお勧めします。外側forループはアルファベットを繰り返し、外側は指定文字を追加する回数を定義します。いくつかの文字列s倍の整数は、その文字列を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' を提供します - したものではありません 'AA'、 'BB'、...、 'ZZ' などに続く 'Z' を、探している。

代わりに、配列を作成し、それを逆に繰り返します。私が思いついたコードは醜いものですが、うまくいきます。特に最後の行に対する謝罪。

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

ちょっと、私はあなたのコードを使ったときに、aaaa、bbbb、ccccのように隣の同じ文字を使用しています。私はokhm pgjy、ectのような各列を通過するためにそれの後にいた任意のアイデア? – Jay

+0

申し訳ありませんが、私はあなたの質問を誤解している必要があります、私はあなたが何らかの理由で探していたと思った。これを解決するにはいくつかの方法があります。私は上記の私の答えを編集します。 – Checkmate

関連する問題