-1

こんにちは、アスタリスク アルファベットを作成するリストの辞書を出力する ASCII バナーに取り組んでいます。今のところ、縦に印刷できましたが、横に印刷するのに苦労しています。

誰か助けてくれませんか?

これは私がこれまでに持っているものです。

水平方向に印刷するための私のアプローチは、リストの最初の要素をすべて印刷してから 2 番目の要素を印刷する連結代入でした。

しかし、ネストされたループに入れると、最初の行にさらに連結されるため、私のロジックに欠陥があるようです

letter_dict = {'A':
["***** ",
"*   * ",
"***** ",
"*   * ",
"*   * "],
'B':["***   ",
     "*   * ",
     "****  ",
     "*   * ",
     "****  "],
'C':["***** ",
     "*     ",
     "*     ",
     "*     ",
     "***** "],
'D':["****  ",
     "*   * ",
     "*   * ",
     "*   * ",
     "****  "],
'E':["***** ",
     "*     ",
     "***** ",
     "*     ",
     "***** "],
'F':["***** ",
     "*     ",
     "***** ",
     "*     ",
     "*     "],
'G':["***** ",
     "*     ",
     "* *** ",
     "* * * ",
     "***** "],
'H':["*     ",
     "*     ",
     "***** ",
     "*     ",
     "*     "],
'I':["***** ",
     "  *   ",
     "  *   ",
     "  *   ",
     "***** "],
'J':["***** ",
     "  *   ",
     "  *   ",
     "  *   ",
     "***   "],
'K':["*   * ",
     "*  *  ",
     "* *   ",
     "*  *  ",
     "*   * "],
'L':["*     ",
     "*     ",
     "*     ",
     "*     ",
     "***** "],
'M':["*   * ",
     "* * * ",
     "*   * ",
     "*   * ",
     "*   * "],
'N':["*     ",
     "**    ",
     "* *   ",
     "*  *  ",
     "*   * "],
'O':["***** ",
     "*   * ",
     "*   * ",
     "*   * ",
     "***** "],
'P':["***** ",
     "*   * ",
     "***** ",
     "*     ",
     "*     "],
'O':["***** ",
     "*   * ",
     "*   * ",
     "* **  ",
     "*** * "],
'R':["***** ",
     "*   * ",
     "***** ",
     "*  *  ",
     "*   * "],
'S':["***** ",
     "*     ",
     "***** ",
     "    * ",
     "***** "],
'T':["***** ",
     "  *   ",
     "  *   ",
     "  *   ",
     "  *   "],
'U':["*   * ",
     "*   * ",
     "*   * ",
     "*   * ",
     "***** "],
'V':["*   * ",
     "*   * ",
     "*   * ",
     " * *  ",
     "  *   "],
'W':["*   * ",
     "*   * ",
     "*   * ",
     "* * * ",
     " * *  "],
'X':["*   * ",
     " * *  ",
     "  *   ",
     " * *  ",
     "*   * "],
'X':["*   * ",
     " * *  ",
     "  *   ",
     "  *   ",
     "  *   "],
'Z':["***** ",
     "   *  ",
     "  *   ",
     " *    ",
     "***** "]}


def print_banner(str_input, horizontal):

    str_input = str_input.upper()

    if horizontal != True:
        for i in range(len(str_input)):
            for j in range(6):
                print(letter_dict[str_input[i]][j])

    else:
        horizontal_line = ""


        for m in range(len(str_input)):

            horizontal_line += letter_dict[str_input[m]][0]

        print(horizontal_line)

print_banner("ABCD", True)
4

2 に答える 2

1

うーん。ドット マトリックス プリンターのように、行全体を 1 行ずつ構成する必要があります。

else:
     for line in range(5):               # Each letter is 5 lines high
          for m in str_input:           
               horizontal_line += letter_dict[m][line]
          horizontal_line += "\n"
     print(horizontal_line)

実行例:

In [7]: str_input = "BAR"

In [8]: horizontal_line = ""

In [9]: %paste
     for line in range(5):               # Each letter is 5 lines high
          for m in str_input:
               horizontal_line += letter_dict[m][line]
          horizontal_line += "\n"
     print(horizontal_line)

***   ***** *****
*   * *   * *   *
****  ***** *****
*   * *   * *  *
****  *   * *   *
于 2013-10-24T19:17:17.073 に答える
0

zip操作を少しきれいにするために使用できます。

for line in zip(letter_dict['L'],letter_dict['O'],letter_dict['L']):
    print(*line)

*      *****  *     
*      *   *  *     
*      *   *  *     
*      *   *  *     
*****  *****  ***** 

上記にエラーがあることに注意してくださいletter_dict。「O」にあったものに「Q」を割り当てます。そして、あなたの「H」の形式が間違っていると思います。

于 2013-10-24T19:22:23.607 に答える