ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python 실습] 파이썬 for문 별 찍기
    Python/Python 실습 2022. 7. 26. 11:05

    중첩 for문을 통해 5가지 별찍기 문제를 해결하고자 한다.

     

    for문을 연습하기에는 별찍기가 제일 좋다고 하여, 시도하게 되었다.


    1. 간단한 2차원 배열의 별찍기

     

    for i in range(3):              # row = 3
        for j in range(4):          # column = 4
            print("*", end='')
        print()

    2. 삼각형 모양 별 찍기

     

    for i in range(3):		# row = 3
        for j in range(3):		# column = 3
            if i>=j:        	# row >= column일 경우 별을 찍습니다.
                print("*", end=''); 
        print()

    row를 3, column을 3으로 설정한 후, row의 인덱스 번호가 column의 인덱스 번호보다 크거나 같을 때 별을 찍었다.


    3. 삼각형 모양 별 찍기 (y축 대칭)

     

    for i in range(3):		# row = 3
        for j in range(3, 0, -1):	# column = 3, 2, 1 하면서 내려옴
            if j>i+1:		# column이 1부터 시작하기에 i+1 적용, j가 i보다 더 크면 빈칸 찍기
                print(" ", end='')
            else:	    		# 그 이외에는 별 찍기
                print("*", end='')
        print()

    row를 3, column을 3으로 설정 후, j를 3부터 시작하여 j-- 를 진행하고, j보다 i가 더 크면 별을 찍는 구조로 설계했다.


    4. 피라미드 모양 별 찍기

     

    row = 3;
        
    for i in range(0, row):
        for j in range(1, row-i):		# 빈칸 순서대로 찍기
            print(" ", end='')
        for j in range(0, i*2+1):		# 별이 찍히는 개수 = i*2+1이므로 범위 설정
            print("*", end='')
        print()

     

    피라미드는 빈칸과 별이 찍히는 부분을 집중해서 구현해 보았다.

    for문 안에 for문을 두개 넣어, 빈칸을 찍는 for문과 별을 찍는 for문을 구분하여 구현하였다.


    5. input()으로 홀수를 입력받아 그에 맞는 다이아몬드 모양의 별 찍기

     

    num = int(input('홀수 숫자를 입력하세요. : '))  # 크기를 입력 받음
    
    start6 = num//2;	# 별이 찍히기 시작하는 장소
    end6 = num//2; 		# 별이 찍히는게 끝나는 장소
    middle6 = num//2;	# row, column의 중간
    
    for i in range(num):			# row = num
        for j in range(num):		# column = num
            if j >= start6 and j <= end6: 	# j >= num/2 and j <= num/2
                print("*", end='')		# 별을 찍는다.
            else:
                print(" ", end='')
        if i < middle6:		# i가 middle보다 작으면
            start6 -= 1;		# start는 -1씩 내린다.
            end6 += 1;		# end는 -1씩 올린다.
            print()
        elif i >= middle6:		# i가 middle보다 크거나 같으면
            start6 += 1;		# start는 +1씩 올린다.
            end6 -= 1;		# end는 -1씩 내린다.
            print()

    위의 결과물은 입력값을 7으로 받았을 때의 결과물이다.

     

    필드로 별이 찍히기 시작하는 장소(start)와 별 찍히기가 끝나는 장소(end), row와 column의 가운데인 middle을 두었다.

     

    middle을 기준으로 위, 아래를 나누어 별을 찍었으며, 시작점과 끝점을 +-1씩 해가며 별을 찍었다.

Designed by Tistory.