본문 바로가기
Programming/Python

파이썬 반복문 이용한 피라미드 만들기 02 (Python for in)

by 심코딩 2022. 4. 25.

오늘은 이전글에 이어 정말로 피라미드를 한번 만들어 보겠습니다!

 

이 전 글을 못보신 분들은 아래 링크를 통해 확인해주세요!

https://s1mcoding.tistory.com/11

 

파이썬 반복문 이용한 피라미드 만들기 01 (Python for in)

파이썬을 공부하시는 분들이라면 기본 문법중에 반복문 이라고 하는것에 대해 배우게 되시겠죠! 굉장히 유용한 표현이면서도 정말 무궁무진하게 이용을 하실 수 있는데요, 꼭 공부하다보면 항

s1mcoding.tistory.com


제가 원하는 코드는 이렇습니다.

 

1. 내가 원하는 줄 수를 정한다.

2. 그 줄 수에 따라 * 로 이루어진 피라미드가 나온다.

 

먼저 정답코드를 먼저 공개하고, 거기에 대해 조금씩 분석하는 식으로 해보겠습니다!

(* 저도 아직 코딩초보이지만 코드를 보고 거기에 대해 분석을 하고 추후 비슷한 코드를 사용해야 할 때 잘 쓸 수 있도록 하는게 더 도움이 되는 것 같더라구요)

 

num = int (input ("Enter the number of rows:"))
for i in range (0,num):
    for j in range(0,num-i-1):
        print(end=" ")
    for j in range(0,i+1):
        print("*", end =" ")
    print()

 

이제 코드를 하나하나 분석해보도록 합시다!

 

일단 첫줄은 굉장히 쉽다. 우리는 단순히 짜여져 있는 코드대로 피라미드가 딱 나오는게 아니라,  우리가 원하는 줄 갯수만큼 피라미드가 나와야 하기 때문에 첫 줄은 우리가 몇줄짜리 피라미드가 필요한지 묻는 코드이다.

 

num = int (input ("Enter the number of rows:"))

 

그 다음은 이전 포스팅에서 알려준대로, 열과 행을 만들것이다.

근데 여기서 아마 피라미드를 처음 만들어 보시는 분들이 생각 못한 개념이 있을 것이다.

 

바로 위와 같은 것인데, 무엇이냐면 이 피라미드를 삼각형 도형으로 생각하는게 아니라, 정사각형 안에서 공백 과 " * " 이 이루어져 있다고 생각하는 것이다. 

 

즉, 우리는 공백을 나타내는 코드와 " * "을 나타내는 코드를 둘 다 작성을 해야한다!

 

이전 포스팅에서 정사각형의 행과 열을 나타내는 코드에 대해서는 다뤄보았으니 바로 적어보겠습니다

 

num = int (input ("Enter the number of rows:"))
for i in range (0,num):
    for j in range(0,num-i-1):
        print(end=" ")

이전 포스팅에서는 우리가 딱 4 x  4 정사각형으로 정해졌었기 때문에 4번만 반복을 했으면 되었지만, 이번에는 내가 원하는 줄 숫자 만큼 반복을 해야하기 때문에 0부터 num까지 반복한다고 해두는 것이다.

 

(즉 몇줄짜리 피라미드가 될지 결정을 한 것)

 

그리고 나서 이제 공백을 어디에 둬야 되는지에 대해 봐야 하는데 위 사진의 첫줄을 보자

 

우리가 만약 지금 num, 즉 줄의 숫자를 4열이라고 생각을 했다고 하자.

 

위 그림은 피라미드의 가장 첫 줄이기 때문에 반복문에 있는 i = 0 인 상황이다.

그리고 앞에서부터 세번째는 공백이고, 네번째에 " * " 이 들어온다.

 

그럼 우리는, i = 0 인 상황에서는 0번째 1번째 2번째는 공백이 들어오고, 3번째가 들어와서야 *이 들어온다고 생각하면 된다. (파이썬은 숫자를 0부터 센다, 그리고 마지막 숫자는 세지 않는다.)

 

4 (num) - 0 (i) -1 을 하게 되면 딱 숫자 3이 나오게 된다.  그렇다면 반복문의 범위가 (0,3) 까지 되는 것이다. 다시 말하지만 파이썬은 숫자를 0부터 세고, 마지막 숫자는 세지 않기 때문에 처음부터 세번째까지 공백이 나오게 되는 코드 인것이다..

 

for j in range(0,num-i-1):
        print(end=" ")

딱 첫줄로만 코드를 작성해도 웬만하면 둘째줄 셋째줄에도 모두 적용이 된다. 이제 이렇게만 두면 공백은 자기가 알아서 잘 만들어 둘것이다.

 

이제 " * " 을 만들어보자.

 

for j in range(0,i+1):
        print("*", end =" ")

공백보다는 간단하다, 첫 줄 기준으로 네번째 칸에 " * " 이 들어오게 되면 된다.

또한 공백을 만드는 코드 하단에 만들었기 때문에 처음엔 공백이 적용이 되고, 그 다음에 바로 * 이 들어오게 된다.

 

첫 줄 기준으로 i가 0이기 때문에 공백이 끝난 후 바로 *이 들어오게 되는 것이다.

또한 *을 만들고 개행을 위해 end = " " 잊지말자.


 

사실.. 지금도 만약에 누군가가 갑자기 나한테 피라미드를 만들라고 하면 만들 수 있을진 모르겠다.. 이번 기회에 다시 한번 복습하는 시간을 가진거 같아 좋다!

 

댓글