2013-10-24 3 views
-1

안녕하세요 저는 아스 테 리스크 알파벳을 만드는 목록 사전을 인쇄하는 ASCII 배너 작업을하고 있습니다. 지금까지 수직으로 인쇄하는 데 성공했지만 가로로 인쇄하는 데 문제가 있습니다.파이썬에서 사전 목록을 가로로 인쇄하는 방법은 무엇입니까?

아무도 도와 주시겠습니까?

이것은 내가 지금까지 가지고있는 것입니다.

가로로 인쇄하는 나의 접근 방식은 목록의 첫 번째 요소를 모두 인쇄 한 다음 두 번째 요소를 인쇄하는 연결 할당입니다.

그러나 내가 중첩 루프에 넣을 때 첫 번째 줄

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) 
+0

유닉스/리눅스를 사용하는 경우 왜 '배너'통화를 사용하지 않는 것이 좋을까요? –

답변

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) 

*** ***** ***** 
* * * * * * 
**** ***** ***** 
* * * * * * 
**** * * * * 
+0

나는 당신의 해결책을 시도했다. 그리고 그것은 나의 초기 코드와 같은 문제를 가지고있다. 중첩 루프에서 첫 번째 줄에 대한 ascii 목록은 5 번 반복되고 두 번째 줄은 다섯 번 반복됩니다. 아니면 적어도 그것이 내가 생각하는 것입니다. – user2917252

+0

흠, 그게 저에게 효과적입니다 - 방금 예제를 게시했습니다. –

+0

그래, 나도 잘 작동 해. 나는 horizontal_line + = "\ n"을 간과했다. 그게 뭔지 나에게 설명해 줄 수 있다고 생각하니? – user2917252

0

당신은 작업을 조금 청소기를 만들기 위해 zip을 사용할 수

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

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

위에서 letter_dict에 오류가 발생했음을 유의하십시오. 'O'에있는 것보다 'Q'를 할당하십시오. 그리고 당신의 'H'가 기형이라고 믿습니다.

관련 문제