오늘은 이전글에 이어 정말로 피라미드를 한번 만들어 보겠습니다!
이 전 글을 못보신 분들은 아래 링크를 통해 확인해주세요!
https://s1mcoding.tistory.com/11
제가 원하는 코드는 이렇습니다.
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 = " " 잊지말자.
사실.. 지금도 만약에 누군가가 갑자기 나한테 피라미드를 만들라고 하면 만들 수 있을진 모르겠다.. 이번 기회에 다시 한번 복습하는 시간을 가진거 같아 좋다!
'Programming > Python' 카테고리의 다른 글
코드업 6095 바둑판에 흰돌놓기 - 파이썬 (Python) (2) | 2022.04.29 |
---|---|
JSON (제이슨) 이란 무엇인가? 파이썬 기본 문법 (0) | 2022.04.27 |
파이썬 반복문 이용한 피라미드 만들기 01 (Python for in) (18) | 2022.04.23 |
파이썬 람다(lambda) 함수란? - 파이썬 기초 문법 (6) | 2022.04.21 |
파이썬 클래스 (Class) 함수 심화 편 [상속, self, _inst_] (파이썬 문법) (0) | 2022.04.18 |
댓글