파이썬 for 반복문을 공부할 때 자주 보는 고전적인 예제로 다음과 같은 피라미드 만들기가 있습니다. 다음과 같은 실행 결과가 나오도록 직접 구현해 보세요! 이 때 문자열 * 연산자를 사용하지 말고 반복문을 사용해서 해결해 보세요.

 

<피라미드 만들기 실행 결과 1>

윤인성 저자님도 처음 프로그래밍을 배울 때 이 예제를 완성하지 못하고 답지를 보았다고 합니다. 5년 정도 후에 함께 일하는 동료들과 이야기를 나누다가 다시 시도를 해봤지만, 그 때도 스스로 완성하지 못했다고 해요. 어려운 문제이므로 코드를 작성하지 못해도 크게 낙심하지 마세요!

*
**
***
****
*****
******
*******
********
*********

코드를 확인하기 전에 조금만 더 고민해 보세요!

 

<반복문으로 피라미드 만들기 1 – 코드>

프로그래밍은 항상 여러가지 답이 나올 수 있습니다. 일반적인 답은 다음과 같습니다. 반복문을 2번 중첩해 사용했습니다.

output = " "

    for i in range(1, 10):
        for j in range(0, i):
            output += "*"
        output += "\n"

print(output)

 

2개의 for 반복문이 한 번 실행될 때마다 나오는 결과를 직접 적어가며 분석하다 보면 결과가 어떻게 나오게 되는지 알 수 있습니다.

파이썬 for문 별찍기

 

그래도 잘 모르겠다면 파이썬 튜터를 활용해 보세요. output, i, j라는 변수가 어떻게 변화하면서 결과가 나오는지 단계별로 보여줘서 조금 더 쉽게 이해할 수 있습니다.

 

파이썬 튜터 별찍기

 

 

 


 

<피라미드 만들기 실행 결과 2>

다음은 앞서 실행했던 예제와 다른 형태의 피라미드 예제입니다. 윤인성 저자님은 이 예제도 처음 프로그래밍을 공부할 당시 며칠을 꼬박 고민하고도 완성하지 못했다고 합니다. 

 

*
***
*****
*******
*********
***********
*************
**************
*****************
*******************
*********************
***********************
*************************
***************************

 

코드를 확인하기 전에 조금만 더 고민해 보세요!

 

 

<반복문으로 피라미드 만들기2 – 코드>

일반적인 답은 다음과 같습니다. 마찬가지로 파이썬 튜터를 활용해서 분석해 보세요. 또한 문자열 * 연산자를 활용하는 형태로도 구현해 보면 좋을 것입니다.

output = " "

    for i in range(1, 15):
        for j in range(14, i, -1):
            output += ' '
        for j in range(0, 2 * i -1):
            output += '*'
        output += '\n'

print(output)

 

 

파이썬 튜터 피라미드

 

중첩 반복문으로 피라미드 만들기 예제를 직접 연습하고 분석하면서 진행했다면 며칠이 지났을지도 모릅니다. 파이썬 입문 도서나 실무에서 이만큼 어려운 반복문을 그다지 많이 사용하지 않습니다. 따라서 이번 예제를 모두 이해했다면, 입문 도서에 있는 웬만한 예제를 진행할 실력을 갖추었다고 볼 수 있습니다.

 
 
 

 
혼자 공부하는 파이썬(개정판) 

위 내용은 『혼자 공부하는 파이썬(개정판)』의 일부분을 재구성하여 작성하였습니다.

혼공파가 더욱 흥미있고 알찬 내용으로 개정되었습니다. 입문자가 자주 물어보는 질문과 오류 해결 방법을 적재적소에 배치하여 예상치 못한 문제에 부딪혀도 좌절하지 않고 끝까지 완독할 수 있도록 도와줍니다.

단순한 문법 암기와 코딩 따라하기에 지쳤다면, 새로운 혼공파와 함께 ‘누적 예제’‘도전 문제’로 프로그래밍의 신세계를 경험해 보세요! 배운 내용을 씹고 뜯고 맛보고 즐기다 보면 응용력은 물론 알고리즘 사고력까지 키워 코딩 실력이 쑥쑥 성장할 것입니다.