63 — 아스키 아트 — 문자로 그리기
47 가이드는 한 줄이 자라나는 # 행을 그렸습니다.
여기서는 행이 모양을 유지하므로 그림이 나타납니다 — *와 공백으로 만든
도형입니다. 두 가지 도구가 일을 합니다. 문자열 곱셈은 문자를 반복하고,
반복은 한 줄을 반복합니다. 중첩 반복이 그 줄들을 삼각형과 마름모로
만듭니다.
단계
"*" * 5는 별 다섯 개짜리 문자열 하나이고," " * 2 + "*" * 3은 공백 두 개에 별 세 개를 붙입니다. 문자열도 숫자처럼 곱하고 더할 수 있습니다:
실행해 보기 →말해 "*" * 5 말해 " " * 2 + "*" * 3*****다음에***(공백 두 개, 별 세 개)이 출력됩니다.for반복이 반복된 문자열을 삼각형으로 만듭니다. 매 패스가 한 줄을 출력하고, 줄은i에 따라 자라납니다:
실행해 보기 →for i in range(1, 6): 말해 "*" * i별 하나에서 다섯 개까지의 직각 삼각형이 출력됩니다.
range(5, 0, -1)은 거꾸로 셉니다. 그래서 줄이 줄어듭니다. 같은 반복 몸통이 거꾸로 된 삼각형을 그립니다:
실행해 보기 →for i in range(5, 0, -1): 말해 "*" * i별 다섯 개에서 하나까지 출력됩니다.
가운데 정렬된 줄에는 왼쪽에 공백이 필요합니다. 다섯 줄 도형의
i번째 줄에는n - i개의 공백이 별을 가운데로 밀고,2 * i - 1개의 별은 1, 3, 5... 처럼 홀수 개입니다:
실행해 보기 →n = 5 for i in range(1, n + 1): 공백 = " " * (n - i) 별 = "*" * (2 * i - 1) 말해 공백 + 별뾰족한 마름모 윗부분이 출력됩니다.
이제 전체 그림을 한 프로그램에 담습니다. 마름모는 가운데 정렬된 줄을 두 번 씁니다 — 위쪽은 위로 세고, 아래쪽은 거꾸로 셉니다.
ascii.ko.nme로 저장합니다:
실행해 보기 →# ascii.ko.nme — 문자로 도형 그리기 # 실행: nme 실행 ascii.ko # # 도형은 두 가지 아이디어로 만듭니다. 문자열 곱셈은 문자를 # 반복하고, 중첩 반복은 줄을 반복합니다. 직각 삼각형, # 거꾸로 삼각형, 마름모를 그립니다. n = 5 말해 "직각 삼각형:" for i in range(1, n + 1): 말해 "*" * i 말해 "" 말해 "거꾸로 삼각형:" for i in range(n, 0, -1): 말해 "*" * i 말해 "" 말해 "마름모:" for i in range(1, n + 1): 공백 = " " * (n - i) 별 = "*" * (2 * i - 1) 말해 공백 + 별 for i in range(n - 1, 0, -1): 공백 = " " * (n - i) 별 = "*" * (2 * i - 1) 말해 공백 + 별실행합니다:
nme 실행 ascii.ko직각 삼각형: * ** *** **** ***** 거꾸로 삼각형: ***** **** *** ** * 마름모: * *** ***** ******* ********* ******* ***** *** *마름모는 별 하나에서 시작해 아홉 개까지 넓어졌다가 하나로 좁아집니다. 아래쪽 반복이
n - 1에서 시작하므로 가장 넓은 줄이 두 번 출력되지 않습니다.영어는 같은 단계를
show,spaces,stars로 씁니다. 전체 영어 프로그램은 영어 가이드에 있습니다.
직접 해보기
n을 5에서 8로 바꾸고 다시 실행해 보세요. 모든 도형이 커집니다. 그런
다음 문자 H를 만들어 보세요: 별 기둥 두 개에 가운데 n개의 별 줄을
넣고, if로 가운데 줄을 고르는 반복 하나로 만듭니다. "*"를 "@"로
바꾸면 같은 도형이 다른 문자로 나옵니다.
배운 것
"*" * 5는 문자열을 반복하고," " * 2 + "*" * 3은 가운데 정렬 줄을 만듭니다.- 반복이 한 줄을 반복하고, 반복 변수가 각 줄의 길이를 정합니다.
range(n, 0, -1)은 거꾸로 세어 줄을 줄여 줍니다.- 마름모는 가운데 정렬된 줄 하나를 위로 세고 다시 거꾸로 세는 것입니다.
- 중첩 반복 — 각 줄의 모양을 정하는 반복 — 은 그림을 그립니다.