[Python] '변수 리스트의 값'을 이름으로 갖는 변수 사용
조회수 436회
어제 저녁에 파이썬을 시작한 초보입니다. 이전에 C를 조금 해서 기본적인 것은 알고 있지만 생각보다 살짝 어렵네요. 일단 질문 제목이 모호한 점 죄송합니다. 어떻게 달리 표현할 방법이 없었어요. 저는 세 자리 숫자를 입력받아 그림으로 나타내는 코드를 짜고 있었습니다. 연습삼아 처음 짜 보는 거라 살짝 난잡합니다만 올릴게요.
zero = ["***",
"* *",
"* *",
"* *",
"***"]
one = [" * ",
"** ",
" * ",
" * ",
"***"]
two = ["***",
" *",
"***",
"* ",
"***"]
three = ["***",
" *",
"***",
" *",
"***"]
four = [" *",
" **",
"* *",
"***",
" *"]
five = ["***",
"* ",
"***",
" *",
"***"]
six = ["***",
"* ",
"***",
"* *",
"***"]
seven = ["***",
" *",
" * ",
" * ",
" * "]
eight = ["***",
"* *",
"***",
"* *",
"***"]
nine = ["***",
"* *",
"***",
" *",
"***"]
listup = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
N = 0
def Display(n):
i = 0
ycdn = 0
bufferch = ["","",""]
ln = ["", "", ""]
while i <= 2:
ln[i] = listup[int(n[i])]
i += 1
N = input('Type 3-digit number: ')
str(N)
print(N[0], N[1], N[2])
print('\n\n')
Display(N)
Display()
함수에서 막혔습니다. 제가 구상한 방법은,
- 'N' 입력받고 스트링으로 바꿈
- def 함수에서, N 배열의 각 숫자를 대응시켜 ln[]에 one, two, three 등으로 저장.
- ln에 들어 있는 one, two, three 등을, 위에 정의한 변수들과 반복문을 사용하여 한 줄씩 그림으로 출력.
3번에서 ln의 값들을 어떻게 변수로 치환할 수 있는지 궁금합니다. 아니면 더 괜찮은 방법이 있을까요? 설명을 잘 못해서 죄송합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
3 답변
-
zero = ["***", "* *", "* *", "* *", "***"] one = [" * ", "** ", " * ", " * ", "***"] two = ["***", " *", "***", "* ", "***"] three = ["***", " *", "***", " *", "***"] four = [" *", " **", "* *", "***", " *"] five = ["***", "* ", "***", " *", "***"] six = ["***", "* ", "***", "* *", "***"] seven = ["***", " *", " * ", " * ", " * "] eight = ["***", "* *", "***", "* *", "***"] nine = ["***", "* *", "***", " *", "***"] listup = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] N = 0 def Display(n): buf = '' buf2 = ['']*5 for i in n: tmp = 'listup[%d]'%int(i) buf = eval(tmp) for idx, j in enumerate(eval(buf)): buf2[idx] += j buf2[idx] += ' ' for i in range(0,5): print(buf2[i]) N = input('Type 3-digit number: ') str(N) print(N[0], N[1], N[2]) print('\n') Display(N) #result #Type 3-digit number: 456 #4 5 6 # * *** *** # ** * * #* * *** *** #*** * * * # * *** ***
-
listup
을 "변수명"의 배열로 만들 필요가 없어요.zero = ["***", "* *", "* *", "* *", "***"] one = [" * ", "** ", " * ", " * ", "***"] two = ["***", " *", "***", "* ", "***"] three = ["***", " *", "***", " *", "***"] four = [" *", " **", "* *", "***", " *"] five = ["***", "* ", "***", " *", "***"] six = ["***", "* ", "***", "* *", "***"] seven = ["***", " *", " * ", " * ", " * "] eight = ["***", "* *", "***", "* *", "***"] nine = ["***", "* *", "***", " *", "***"] listup = [zero, one, two, three, four, five, six, seven, eight, nine] N = 0 def Display(n): screen = ['', '', '', '', ''] for d in n: d = int(d) for i, l in enumerate(listup[d]): screen[i] += l screen[i] += ' ' for l in screen: print(l) N = input('Type 3-digit number: ') N = str(N) print(N) print('\n\n') Display(N)
-
결국 풀어헤치면 같은 내용이긴 한데,
위 코드에 숟가락 하나 얹어 봅니다.
def Display(n): for line in zip(*(listup[int(d)] for d in n)): print(" ".join(line))
댓글 입력