본문 바로가기
파이썬

*을 출력해서 마름모 만들기

by Joylove 2022. 7. 21.
728x90
반응형

 

# 전체 라인을 위한 변수
line = 9
# 마름모의 중앙 값 소수점이 필요없으므로 몫만 구한다.
half = 9//2
# 공백칸 수 
space = 0
# 한 라인에서의 전체 칸 수
step = 0
 
'필요한 변수는 4가지 > 몇줄, 차지하는칸, 빈칸, 변하는 중심값 '

 

[ i for문은 공백칸 & 필요칸 수 설정]
for i in range(0, line)
    # i값이 중앙 위치에 올 때 까지 ( i = 0,1,2,3,4)
    if  i <= half: 
        # 첫 번째 줄에서 별 찍으려면 전체 칸보다 공백이 하나 적어야해서 마지막에 1을 더 뺌
        space = line - i - 1
        # 전체 칸은 그냥 1개씩 증가하면 되니, i를 더한다
        step = line + i
    else:  
        # 중앙 값보다 커질 때부터는 공백이 늘고 전체 칸 수가 줄어든다.  ( i = 5,6,7,8)
        space = space + 1
        step = step - 1 
    [ j for문은 설정된 공백칸 & 필요칸 가지고 출력]
    for j in range(0, step): 
        if  j < space:
            print(' ', end='')  
       else:
            print('*', end='')
       # 칸을 다 그림(j포문이 끝났다면...) 그 후에는 라인변경
 
     print()
 
        *
       ***
      *****
     *******
    *********
     *******
      *****
       ***
        *

 

# FIXME: 1) i=0 / if 0(i) < 4 / 8(space= *앞 공백칸수) = 9 - 0(i) - 1 /  9(step, 한 라인의 전체칸 수) = 9 + 0(i)
# TODO:  1번째 라인) j=0 / step = 9 / space = 8 / 0<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=1 / step = 9 / space = 8 / 1<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=2 / step = 9 / space = 8 / 2<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=3 / step = 9 / space = 8 / 3<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=4 / step = 9 / space = 8 / 4<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=5 / step = 9 / space = 8 / 5<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=6 / step = 9 / space = 8 / 6<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=7 / step = 9 / space = 8 / 7<8 이므로, 빈칸하나 출력
# TODO:  1번째 라인) j=8 / step = 9 / space = 8 / 8<8 이므로,   * 출력   > j는 step 앞의 숫자까지만 실행됨


# FIXME: 2) i=1 / if 1(i) < 4 / 7(space= *앞 공백칸수) = 9 - 1(i) -1  /  10(step, 한 라인의 전체칸 수) = 9 + 1(i)
# TODO:  2번째 라인) j=0 / step = 10 / space = 7 / 0<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=1 / step = 10 / space = 7 / 1<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=2 / step = 10 / space = 7 / 2<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=3 / step = 10 / space = 7 / 3<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=4 / step = 10 / space = 7 / 4<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=5 / step = 10 / space = 7 / 5<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=6 / step = 10 / space = 7 / 6<7 이므로, 빈칸하나 출력
# TODO:  2번째 라인) j=7 / step = 10 / space = 7 / 7<7 이므로,   * 출력  
# TODO:  2번째 라인) j=8 / step = 10 / space = 7 / 8<7 이므로,   * 출력  
# TODO:  2번째 라인) j=9 / step = 10 / space = 7 / 9<7 이므로,   * 출력  

# FIXME: 3) i=2 / if 2(i) < 4 / 6(space= *앞 공백칸수) = 9 - 2(i) -1  /  11(step, 한 라인의 전체칸 수) = 9 + 2(i)
# TODO:  3번째 라인) j=0 / step = 11 / space = 6 / 0<6 이므로, 빈칸하나 출력
# TODO:  3번째 라인) j=1 / step = 11 / space = 6 / 1<6 이므로, 빈칸하나 출력
# TODO:  3번째 라인) j=2 / step = 11 / space = 6 / 2<6 이므로, 빈칸하나 출력
# TODO:  3번째 라인) j=3 / step = 11 / space = 6 / 3<6 이므로, 빈칸하나 출력
# TODO:  3번째 라인) j=4 / step = 11 / space = 6 / 4<6 이므로, 빈칸하나 출력
# TODO:  3번째 라인) j=5 / step = 11 / space = 6 / 5<6 이므로, 빈칸하나 출력
# TODO:  3번째 라인) j=6 / step = 11 / space = 6 / 6<6 이므로,   * 출력
# TODO:  3번째 라인) j=7 / step = 11 / space = 6 / 7<6 이므로,   * 출력  
# TODO:  3번째 라인) j=8 / step = 11 / space = 6 / 8<6 이므로,   * 출력  
# TODO:  3번째 라인) j=9 / step = 11 / space = 6 / 9<6 이므로,   * 출력
# TODO:  3번째 라인) j=10 / step = 11 / space = 6 / 10<6 이므로, * 출력


# FIXME: 4) i=3 / if 3(i) < 4 / 5(space= *앞 공백칸수) = 9 - 3(i) -1  /  12(step, 한 라인의 전체칸 수) = 9 + 3(i)
# TODO:  4번째 라인) j=0 / step = 12 / space = 5 / 0<5 이므로, 빈칸하나 출력
# TODO:  4번째 라인) j=1 / step = 12 / space = 5 / 1<5 이므로, 빈칸하나 출력
# TODO:  4번째 라인) j=2 / step = 12 / space = 5 / 2<5 이므로, 빈칸하나 출력
# TODO:  4번째 라인) j=3 / step = 12 / space = 5 / 3<5 이므로, 빈칸하나 출력
# TODO:  4번째 라인) j=4 / step = 12 / space = 5 / 4<5 이므로, 빈칸하나 출력
# TODO:  4번째 라인) j=5 / step = 12 / space = 5 / 5<5 이므로,   * 출력
# TODO:  4번째 라인) j=6 / step = 12 / space = 5 / 6<5 이므로,   * 출력
# TODO:  4번째 라인) j=7 / step = 12 / space = 5 / 7<5 이므로,   * 출력  
# TODO:  4번째 라인) j=8 / step = 12 / space = 5 / 8<5 이므로,   * 출력  
# TODO:  4번째 라인) j=9 / step = 12 / space = 5 / 9<5 이므로,   * 출력
# TODO:  4번째 라인) j=10 / step = 12 / space = 5 / 10<5 이므로, * 출력
# TODO:  4번째 라인) j=11 / step = 12 / space = 5 / 11<5 이므로, * 출력

# FIXME: 5) i=4 / if 4(i) < 4 / 4(space= *앞 공백칸수) = 9 - 5(i) -1  /  13(step, 한 라인의 전체칸 수) = 9 + 4(i)
# TODO:  5번째 라인) j=0 / step = 13 / space = 4 / 0<4 이므로, 빈칸하나 출력
# TODO:  5번째 라인) j=1 / step = 13 / space = 4 / 1<4 이므로, 빈칸하나 출력
# TODO:  5번째 라인) j=2 / step = 13 / space = 4 / 2<4 이므로, 빈칸하나 출력
# TODO:  5번째 라인) j=3 / step = 13 / space = 4 / 3<4 이므로, 빈칸하나 출력
# TODO:  5번째 라인) j=4 / step = 13 / space = 4 / 4<4 이므로,   * 출력
# TODO:  5번째 라인) j=5 / step = 13 / space = 4 / 5<4 이므로,   * 출력
# TODO:  5번째 라인) j=6 / step = 13 / space = 4 / 6<4 이므로,   * 출력
# TODO:  5번째 라인) j=7 / step = 13 / space = 4 / 7<4 이므로,   * 출력  
# TODO:  5번째 라인) j=8 / step = 13 / space = 4 / 8<4 이므로,   * 출력  
# TODO:  5번째 라인) j=9 / step = 13 / space = 4 / 9<4 이므로,   * 출력
# TODO:  5번째 라인) j=10 / step = 13 / space = 4 / 10<4 이므로, * 출력
# TODO:  5번째 라인) j=11 / step = 13 / space = 4 / 11<4 이므로, * 출력
# TODO:  5번째 라인) j=12 / step = 13 / space = 4 / 12<4 이므로, * 출력

# FIXME: 6) i=5 / if 5(i) < 4 / space 5(space = space(4) + 1)=5번째라인의 space값, step = 12(step = step(13) - 1)
# TODO:  6번째 라인) j=0 / step = 12 / space = 5 / 0<5 이므로, 빈칸하나 출력
# TODO:  6번째 라인) j=1 / step = 12 / space = 5 / 1<5 이므로, 빈칸하나 출력
# TODO:  6번째 라인) j=2 / step = 12 / space = 5 / 2<5 이므로, 빈칸하나 출력
# TODO:  6번째 라인) j=3 / step = 12 / space = 5 / 3<5 이므로, 빈칸하나 출력
# TODO:  6번째 라인) j=4 / step = 12 / space = 5 / 4<5 이므로, 빈칸하나 출력
# TODO:  6번째 라인) j=5 / step = 12 / space = 5 / 5<5 이므로,   * 출력
# TODO:  6번째 라인) j=6 / step = 12 / space = 5 / 6<5 이므로,   * 출력
# TODO:  6번째 라인) j=7 / step = 12 / space = 5 / 7<5 이므로,   * 출력  
# TODO:  6번째 라인) j=8 / step = 12 / space = 5 / 8<5 이므로,   * 출력  
# TODO:  6번째 라인) j=9 / step = 12 / space = 5 / 9<5 이므로,   * 출력
# TODO:  6번째 라인) j=10 / step = 12 / space = 5 / 10<5 이므로, * 출력
# TODO:  6번째 라인) j=11 / step = 12 / space = 5 / 11<5 이므로, * 출력

# FIXME: 7) i=6 / if 5(i) < 4 / space 1, step = -1
# TODO:  7번째 라인) j=0 / step = -1 / space = 1 / 0<1 이므로, 빈칸하나 출력
# TODO:  7번째 라인) j=1 / step = -1 / space = 1 / 1<1 이므로, 빈칸하나 출력

# FIXME: 8) i=7 / if 5(i) < 4 / space 1, step = -1
# TODO:  8번째 라인) j=0 / step = -1 / space = 1 / 0<1 이므로, 빈칸하나 출력
# TODO:  8번째 라인) j=1 / step = -1 / space = 1 / 1<1 이므로, 빈칸하나 출력

# FIXME: 9) i=8 / if 5(i) < 4 / space 1, step = -1
# TODO:  9번째 라인) j=0 / step = -1 / space = 1 / 0<1 이므로, 빈칸하나 출력
# TODO:  9번째 라인) j=1 / step = -1 / space = 1 / 1<1 이므로, 빈칸하나 출력
728x90

댓글