

더보기
제시된 Python 코드는 정삼각형 모양의 별을 출력하는 프로그램이다. 코드는 두 개의 중첩된 for 반복문을 사용하여 각 줄에 필요한 **공백( )**과 **별(*)**의 개수를 제어한다.
#1: 일반적인 중첩 반복문 사용
rows = 8
for i in range(rows):
for j in range(rows - i - 1):
print(" ", end="")
for k in range(2 * i + 1):
print("*", end="")
print()
코드 분석
1. rows = 8
- rows 변수는 삼각형의 전체 높이를 결정합니다. 여기서는 8줄짜리 삼각형을 만듭니다. 이 값을 변경하면 삼각형의 크기를 조절할 수 있습니다.
2. for i in range(rows):
- 외부 반복문으로, i는 현재 출력할 줄의 번호(0부터 시작)를 나타냅니다. 이 반복문은 i가 0에서 7까지 총 8번 실행되어 8개의 줄을 만듭니다.
3. 첫 번째 중첩 반복문: 공백 출력
- for j in range(rows - i - 1):
- 이 반복문은 각 줄 앞에 공백을 출력합니다.
- rows - i - 1은 현재 줄 번호(i)에 따라 공백의 개수를 계산합니다.
- i = 0 (첫째 줄): 8 - 0 - 1 = 7개의 공백 출력
- i = 1 (둘째 줄): 8 - 1 - 1 = 6개의 공백 출력
- ...
- i = 7 (마지막 줄): 8 - 7 - 1 = 0개의 공백 출력
- 줄 번호가 증가할수록 공백의 개수가 하나씩 감소하여 별이 중앙에 오도록 합니다.
- print(" ", end="")는 공백을 출력한 후 줄바꿈을 하지 않고 다음 내용이 바로 이어서 출력되도록 합니다.
4. 두 번째 중첩 반복문: 별 출력
- for k in range(2 * i + 1):
- 이 반복문은 각 줄에 별을 출력합니다.
- 2 * i + 1은 현재 줄 번호(i)에 따라 별의 개수를 계산합니다.
- i = 0 (첫째 줄): 2 * 0 + 1 = 1개의 별 출력
- i = 1 (둘째 줄): 2 * 1 + 1 = 3개의 별 출력
- i = 2 (셋째 줄): 2 * 2 + 1 = 5개의 별 출력
- ...
- i = 7 (마지막 줄): 2 * 7 + 1 = 15개의 별 출력
- 별의 개수가 홀수로 1, 3, 5, ... 순서로 증가하여 정삼각형 모양을 만듭니다.
- print("*", end="")는 별을 출력한 후 줄바꿈을 하지 않고 공백과 마찬가지로 이어서 출력합니다.
5. print()
- 두 개의 중첩 반복문이 끝난 후 줄바꿈을 수행합니다. 이로 인해 다음 줄의 공백과 별이 새로운 줄에 출력됩니다.
결과적으로, 이 코드는 줄마다 공백의 개수를 줄이고 별의 개수를 늘려가면서 최종적으로 이미지와 같은 정삼각형 모양을 만듭니다.
더보기
파이썬의 문자열 기능을 활용하면 코드를 훨씬 간결하게 만들 수 있다. 문자열을 숫자로 곱하면 해당 문자열이 반복되고, .center() 메서드를 이용해 문자열을 중앙 정렬할 수 있다.
# 2: 문자열 곱셈 및 중앙 정렬 활용
rows = 8
for i in range(rows):
stars = "*" * (2 * i + 1)
print(stars.center(2 * rows - 1))
코드 분석
1. rows = 8
- **rows**는 삼각형의 높이를 결정하는 변수입니다. 여기서는 8줄짜리 삼각형을 만듭니다.
2. for i in range(rows):
- for 반복문은 i를 0부터 7까지 8번 반복합니다. i는 현재 출력할 줄의 번호를 나타냅니다.
3. stars = "*" * (2 * i + 1)
- 이 줄은 문자열 곱셈을 사용해 현재 줄에 필요한 별(*) 문자열을 만듭니다.
- (2 * i + 1)은 각 줄에 출력할 별의 개수를 계산하는 식입니다.
- i=0일 때: * (1개)
- i=1일 때: *** (3개)
- i=2일 때: ***** (5개)
- 이렇게 각 줄마다 홀수 개의 별이 들어간 문자열이 stars 변수에 저장됩니다.
4. print(stars.center(2 * rows - 1))
- print() 함수는 화면에 결과를 출력합니다.
- .center() 메서드는 문자열을 특정 너비 안에서 가운데로 정렬해주는 역할을 합니다.
- (2 * rows - 1)는 가장 아랫줄(i=7)의 별 개수인 15와 같습니다. 이는 삼각형이 출력될 전체 너비로 사용됩니다.
- 예를 들어, 첫째 줄(stars = "*")은 15칸의 너비 안에서 가운데로 정렬되어 양쪽에 공백이 자동으로 추가됩니다.
- 둘째 줄(stars = "***")도 15칸의 너비 안에서 가운데로 정렬됩니다.
- 이 메서드 덕분에 별의 개수에 따라 자동으로 공백이 계산되어 중앙에 위치하게 되므로, 직접 공백을 계산하고 출력할 필요가 없습니다.
더보기
반복문을 한 번만 사용하여 코드를 더 간결하게 만들 수도 있다. 한 줄에 필요한 공백과 별을 계산하여 문자열을 만든 후 출력한다.
# 3: 단일 반복문 및 문자열 메서드 조합
rows = 8
for i in range(rows):
stars = "*" * (2 * i + 1)
spaces = " " * (rows - i - 1)
print(spaces + stars)
코드 분석
1. rows = 8
- rows 변수는 삼각형의 높이를 나타내며, 여기서는 8줄짜리 삼각형을 만듭니다.
2. for i in range(rows):
- 이 반복문은 i를 0부터 7까지 8번 실행하여 총 8개의 줄을 만듭니다. i는 현재 줄의 번호(0부터 시작)를 나타냅니다.
3. stars = "*" * (2 * i + 1)
- 이 줄은 문자열 곱셈을 사용해 현재 줄에 필요한 별(*) 문자열을 만듭니다.
- (2 * i + 1)은 각 줄에 출력할 별의 개수를 계산하는 공식입니다. i가 0일 때 1개, 1일 때 3개, 2일 때 5개... 와 같이 별의 개수가 홀수로 증가합니다.
4. spaces = " " * (rows - i - 1)
- 이 줄은 문자열 곱셈을 사용해 현재 줄에 필요한 공백( ) 문자열을 만듭니다.
- (rows - i - 1)은 각 줄 앞에 올 공백의 개수를 계산하는 공식입니다. i가 0일 때 7개, 1일 때 6개... 와 같이 줄이 내려갈수록 공백의 개수가 하나씩 감소합니다.
5. print(spaces + stars)
- 이 줄은 앞서 만들어진 spaces 문자열과 stars 문자열을 결합하여 한 줄을 완성하고 출력합니다. 예를 들어, 첫 번째 줄(i = 0)에서는 7개의 공백과 1개의 별을 합쳐서 *을 출력합니다.
- 이 과정을 통해 줄마다 필요한 공백과 별을 계산하여 정삼각형 형태를 만듭니다.

'파이썬(문제풀이)' 카테고리의 다른 글
| 파이썬 단어를 입력하면 거꾸로 출력 (0) | 2025.09.09 |
|---|---|
| 파이썬 다이아몬드 별찍기 (0) | 2025.09.08 |
| 파이썬 - 별찍기 역직각삼각형 (0) | 2025.09.07 |
| 파이썬 별찍기 - 오른쪽으로 정렬된 직각삼각형 (0) | 2025.09.07 |
| 별찍기-직각삼각형 (0) | 2025.09.07 |