계단식으로 별 출력하기
예)
*
**
***
****
*****
for i in range(5): # 5번 반복. 바깥쪽 루프는 세로 방향
for j in range(5): # 5번 반복. 안쪽 루프는 가로 방향
print('*', end='') # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
print()
*****
*****
*****
*****
*****
for i in range(5): # 0부터 4까지 5번 반복. 세로 방향
for j in range(5): # 0부터 4까지 5번 반복. 가로 방향
if j <= i: # 세로 방향 변수 i만큼
print('*', end='') # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
print() # 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
# (print는 출력 후 기본적으로 다음 줄로 넘어감)
for i in range(5): # 0부터 4까지 5번 반복. 세로 방향
for j in range(5): # 0부터 4까지 5번 반복. 가로 방향
if j == i: # 세로 방향 변수와 같을 때
print('*', end='') # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
print() # 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
# (print는 출력 후 기본적으로 다음 줄로 넘어감)
for i in range(5): # 0부터 4까지 5번 반복. 세로 방향
for j in range(5): # 0부터 4까지 5번 반복. 가로 방향
if j == i: # 세로 방향 변수와 같을 때
print('*', end='') # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
else: # 세로 방향 변수와 다를 때
print(' ', end='') # 공백 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
print() # 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
# (print는 출력 후 기본적으로 다음 줄로 넘어감)
19.4 퀴즈
- 다음 코드에 대한 설명으로 잘못된 것을 모두 고르세요.
for i in range(5):
for j in range(5):
print('*', end='')
print()
- 정사각형 모양으로 별이 출력된다.
- 반복문 안에 반복문이 들어있는 중첩 루프이다.
- i가 있는 반복문은 가로 방향을 처리한다.
- j가 있는 반복문은 가로 방향을 처리한다.
- print()처럼 아무것도 지정하지 않으면 print는 줄바꿈을 하지 않는다.
정답) 3, 5
풀이)
3 - i가 있는 반복문은 가로가 아닌 세로방향을 처리한다.
5 - print()는 기본적으로 end='\n' 상태이어서 아무것도 지정하지 않아도 줄바꿈을 한다.
- 다음과 같은 모양으로 별을 출력할 때 밑줄 부분에 들어가야 할 조건식을 고르세요.
for i in range(5):
for j in range(5):
if _______:
print('*', end='')
print()
결과)
*
**
***
****
*****
- i <= j
- i < j
- j <= i
- j < i
- j == i
정답) 3
풀이) 별의 개수는 세로 방향인 줄의 위치에 비례하므로 조건식도 세로 방향 변수 i에 맞추어
j <= i와 같이 작성한다.
연습문제: 역삼각형 모양으로 별 출력하기
- 다음 소스 코드를 완성하여 역삼각형 모양으로 별이 출력되게 만드세요.
for i in range(5):
for j in range(5):
...
print()
결과)
*****
****
***
**
*
정답)
if j < i:
print(' ', end='')
else:
print('*', end='')
풀이)
공백 부분은 세로 방향인 줄의 위치에 비례하므로 조건식도 세로 방향 변수 i에 맞추어 작성한다. 하지만, 여기선 i보다 j가 1이 작다. 따라서 if 조건문은 if j < i: 로 작성하여 가로 방향으로 공백을 출력할 때는 세로 방향의 변수 i보다 작을 때까지 출력하고, 반대되는 조건에서는 별을 출력하면 된다.
19.6 심사문제: 산 모양으로 별 출력하기
- 표준 입력으로 삼각형의 높이가 입력됩니다. 입력된 높이만큼 산 모양으로 별을 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 이때 출력 결과는 예제와 정확히 일치해야 합니다. 모양이 같더라도 공백이나 빈 줄이 더 들어가면 틀린 것으로 처리됩니다.
11줄 작성
입력) 3
결과)
*
***
*****
정답)
a = int(input())
for i in range(a):
for j in reversed(range(a)):
if j > i:
print(' ', end='')
else:
print('*', end='')
for j in range(a):
if j < i:
print('*', end='')
print()
풀이)
우선 반복문을 두개를 사용하여 반으로 나누어서 작성해야한다.
먼저 우상향하는 계단식을 먼저 출력하고 우하향 하는 계단식을 출력하게끔 작성한다.
공백으로 시작해서 점점 별이 많아지는 형태인 우상향 게단은 range()의 값이 우선 reversed로 뒤집어 져서 출력이 되어야 하고 j > i일 때 공백이 출력되고 그 외에는 *이 출력되면 되고 우하향 계단은 조건식을 j < i와 같이 작성하여 j의 변수가 i의 변수보다 작을 때 출력한다.
또한 첫 번째 줄은 출력하지 않아야 하므로 j가 i보다 작을 때만 출력한다.