Python 과제: For Loop + Slicing

2 분 소요

질문

내용

for문과 슬라이싱을 이용해서 문자열 “BINGO”를 아래와 같은 모양으로 출력하는 프로그램을 작성해 보세요.

실행 결과

BINGO
 INGO
  NGO
   GO
    O

답변

내용

먼저 필자는 다음과 같이 bingo라는 변수(Variable)를 하나 만들어 문자열 “BINGO”로 초기화하였다.

bingo = "BINGO"

그 후 이중 반복문을 구성하여 바깥쪽 반복문에서는 bingo의 값을 출력하게끔, 안쪽 반복문에서는 공백(Spacing)을 출력하게끔 해주었다.

그러므로 전체 틀을 다음과 같이 잡아준다.

for i in range(0, 5):       
    for j in range(1, i+1):   

위 코드에서 먼저 바깥쪽 반복문부터 설명하면,

i의 값이 0부터 4까지 총 5회 반복되게끔 구성하였는데 이는 변수 bingo에 들어간 문자열(BINGO)의 길이가 5이기 때문이다.

(Python의 경우에는 C/C++과는 다르게 문자열의 마지막에 null 문자를 삽입하지 않으므로 널 문자(Null Character)를 고려하지 않아도 됨.)

(바깥쪽 반복문에 대해서 더 설명할 것은 없는 듯 하다…)

그 다음 안쪽 반복문에 대해 설명하면,

j 값의 범위를 1부터 i+1까지로 설정하였는데 이는 i 값에 따라 출력되는 공백(Spacing)의 수를 다르게 하기 위함이다.

즉, i의 값의 변화에 따른 반복 횟수만을 보이면 다음과 같다.

i의 값이 0일 때는 안쪽 반복문이 실행되지 않지만,

i의 값이 1일 때는 안쪽 반복문이 1회 실행,

i의 값이 2일 때는 안쪽 반복문이 2회 실행,

i의 값이 3일 때는 안쪽 반복문이 3회 실행,

마지막으로 i의 값이 4일 때는 안쪽 반복문이 4회 실행된다.

그러므로 안쪽 반복문 내에 공백(Spacing)을 출력하는 출력문만 작성해주면 되지 않을까?

for i in range(0, 5):       
    for j in range(1, i+1):
        print(' ', end='')

따라서 위의 i 값의 변화에 따른 반복 횟수를 다음과 같이 바꾸어 말할 수 있다.

i의 값이 0일 때는 안쪽 반복문이 실행되지 않지만,

i의 값이 1일 때는 공백 1회 출력,

i의 값이 2일 때는 공백 2회 출력,

i의 값이 3일 때는 공백 3회 출력,

마지막으로 i의 값이 4일 때는 공백 4회 출력된다.

또한, print문을 보면,

print(' ', end='')

두번째 인자로 end=’ ‘를 삽입하였는데 이는 공백문자 출력 후 어느것도 출력하지 않음을 나타내는 것이다.

만약 이것을 설정하지 않는다면, 기본값이 ‘\n’이어서 공백 출력 이후 자동적으로 개행이 이루어져 우리가 원하는 결과가 출력되지 않을 것이다.

이제 마지막으로 문자열 슬라이싱(Slicing)을 이용하여 BINGO를 출력해보자.

슬라이싱의 범위는 어떻게 구성하는게 좋을까?

바깥쪽 반복문 내 안쪽 반복문 아래에 출력문을 삽입한다면, 아무래도 i의 값을 이용하는 것이 좋지 않을까?

왜냐하면 i의 값이 0부터 4까지 순차적으로 반복하며 증가하기 때문이다.

그러므로 슬라이싱의 범위를 [i:5]로 설정해주자.

이는 다음과 같다.

for i in range(0, 5):       
    for j in range(1, i+1):
        print(' ', end='')
    print(bingo[i:5])

아래에 전체 코드를 보이면서 이번 포스팅을 마무리 짓겠다.

전체 코드

bingo = "BINGO"

for i in range(0, 5):  # BINGO의 길이가 5이므로 0~4까지 총 5회 반복하는 바깥쪽 반복문     
    for j in range(1, i+1):     # i의 값에 따라 출력되는 공백(Spacing)의 수가 달라지는 안쪽 반복문
        print(' ', end='')
    print(bingo[i:5])

댓글남기기