파이썬에서 다이아몬드 그리는 법을 알아보자.
그 전에 우선 피라미드 그리는 법부터 알아야 한다.
최종 출력물
피라미드의 크기(숫자)를 입력하세요 : 10
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
|
위 그림을 그리기 위해선 3개의 변수가 필요하다
피라미드의 높이 n값
공백의 개수, 그리고 *의 개수
n을 3으로 최소화해서 규칙을 살펴보자.
피라미드의 크기(숫자)를 입력하세요 : 3
*
***
*****
|
n=3
|
공백
|
별
|
round 1
|
2
|
1
|
round 2
|
1
|
3
|
round 3
|
0
|
5
|
즉, 공백은 1씩 감소하는 수열이고
별은 1부터 시작해서 +2씩 증가하는 수열이다.
둘다 등차수열이다.
이를 for문을 써서 n과 i를 활용해서 공식으로 나타낸다면 아래와 같을 것이다.
i = 1부터 3까지 반복
- 공백 : 2 = 3-1 = n-i
- 별 : 1 = 2*(3-2) -1 = 2*(n-i-1) - 1
위 공식으로 어떠한 n에 대해서도 피라미드를 그려낼 수 있게 되었다.
따라서 최종 코드는 아래와 같게 된다.
# -*- coding: cp949 -*- n = int(input("피라미드의 크기(숫자)를 입력하세요 : ")) for i in range(1, n+1): print " "* (n-i), "*" * (2*i-1) |
위 구조만 이해하면 마름모는 매우 쉽다.
피라미드를 거꾸로 눕혀주기만 하면 되기 때문이다.
마름모의 크기(숫자)를 입력하세요 : 10
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
|
단 주의할 점은
Loop가 n-1부터 0까지여야 한다는 것이다.
이유는 그려보면 알것이다.
# -*- coding: cp949 -*-
n = int(input("마름모의 크기(숫자)를 입력하세요 : "))
for i in range(1, n+1):
print " "* (n-i), "*" * (2*i-1)
for j in range(n-1, 0, -1) :
print " "* (n-j), "*" * (2*j-1)
|
댓글 없음:
댓글 쓰기