본문 바로가기

연구노트/Python

파이썬 반복문 코드

 
파이썬 반복문 코드

 

 

1번 문제(피라미드 만들기)

 

문제 설명:

숫자를 입력받아 피라미드 모양을 그리는 프로그램을 작성하세요.

세부 조건:

1. 사용자로부터 홀수만 입력받으세요.(1보다 커야함)

2. 입력받은 홀수를 이용하여 다음과 같은 규칙으로 피라미드 모양을 출력해야 합니다.

    • 피라미드의 각 줄은 별(*)의 개수가 1부터 시작하여 점차 늘어나야 합니다.
    • 별(*)은 가운데 정렬되어야 합니다.
    • 예시: Number가 5일 경우, 다음과 같은 피라미드가 출력되어야 합니다.
#예시
입력 : 5
  *
 ***
*****
 
# 풀이
while True:
    Number = int(input("숫자를 입력하세요: "))
    if Number % 2 == 1 and Number > 1:  
        for i in range((Number+1)//2):
            print(" "*((Number-1-i-i)//2), "*"*(i+i+1), " "*((Number-1-i-i)//2), end = "\n")
    else:
        print("다시 실행해 주세요.")
        break
 

풀이 :

홀수를 입력해야지만 동작이 되게끔 만들고 싶어 예외처리를 넣어줬습니다.

반복문인 for를 사용하여 (입력되는수+1)/2번 만큼의 층수를 만들었습니다.

해당 1층, 2층, 3층 ...에 대하여 앞에 빈칸이 필요하므로 (입력되는수 - 1 - 2*n번층) 형태로 구현했습니다.

 

# 결과
숫자를 입력하세요: 5
   *   
  ***  
 ***** 
숫자를 입력하세요: 7
    *    
   ***   
  *****  
 *******
 
2번 문제(모래시계 만들기)

문제 설명:

숫자를 입력받아 모래시계 모양을 그리는 프로그램을 작성하세요.

세부 조건:

1. 사용자로부터 홀수만 입력받으세요.(1보다 커야함)

2. 입력받은 홀수를 이용하여 다음과 같은 규칙으로 모래시계 모양을 출력해야 합니다.

    • 모래시계의 윗부분은 별(*)의 개수가 1부터 시작하여 점차 늘어나야 합니다.
    • 모래시계의 아랫부분은 별(*)의 개수가 가장 큰 값에서 시작하여 점차 줄어들어야 합니다.
    • 각 줄의 별(*)은 가운데 정렬되어야 합니다.
    • 예시: Number가 5일 경우, 다음과 같은 모래시계가 출력되어야 합니다.
#예시
입력 : 5
  *
 ***
*****
 ***
  *
 

 

# 풀이
while True:
    Number = int(input("숫자를 입력하세요: "))
    if Number % 2 == 1 and Number > 1:  
        for i in range((Number+1)//2):
            print(" "*((Number-1-i-i)//2), "*"*(i+i+1), " "*((Number-1-i-i)//2), end = "\n")
        for j in range((Number-1)//2):
            print(" "*(j+1), "*"*(Number-2-j-j)," "*(j+1), end= "\n")
    else:
        print("다시 실행해 주세요.")
        break
 

풀이 :

1번문제에서 아랫단만 추가하여 작성하였습니다.

 

# 결과
숫자를 입력하세요: 5
   *   
  ***
 *****
  ***
   *
숫자를 입력하세요: 7
    *    
   ***
  *****
 *******
  *****
   ***
    *
 

 

3번 문제(크리스마스 트리 만들기)

 

문제 설명:

숫자를 입력받아 크리스마스 트리를 그리는 프로그램을 작성하세요.

 

세부 조건:

1. 사용자로부터 홀수만 입력받으세요.(1보다 커야함)

2. 입력받은 홀수를 이용하여 다음과 같은 규칙으로 크리스마스 트리를 출력해야 합니다.

    • 트리의 윗부분은 입력받은 숫자(Number)를 기준으로, 각 줄의 별(*) 개수가 1, 3, 5, ... 처럼 홀수로 증가해야 합니다.
    • 트리의 줄기 부분은 트리의 가장 넓은 부분의 너비를 고려하여 가운데에 하나의 별(*)을 출력해야 합니다.
    • 예시: Number가 7일 경우, 다음과 같은 트리가 출력되어야 합니다.
#예시
입력 : 7
    *    
   ***
    *
   ***
  *****
    *
   ***
  *****
 *******
    *
    *
    *
 

 

# 풀이
while True:
    Number = int(input("숫자를 입력하세요: "))
    if Number%2 == 1 and Number > 1:
        i = 1
        while i <= (Number-1)//2:
            i += 1
            for j in range(i):
                print(" "*((Number-1-2*j)//2), "*"*(2*j+1), " "*((Number-1-2*j)//2), end = "\n")
        for k in range((Number-1)//2):
            print(" "*((Number-1)//2), "*", " "*((Number-1)//2), end = "\n")  # base on the tree
    else:
        print("다시 실행해 주세요.")
        break
 

풀이 :

트리 윗부분과 아랫부분을 나누어서 작성하였습니다. 트리 아랫부분은 (Number-1)/2개만큼 띄어쓰기를 하였고,

트리 윗부분은 이중반복문을 사용하여 구현하였습니다.

 

# 결과
숫자를 입력하세요: 5
   *   
  ***
   *
  ***
 *****
   *
   *
숫자를 입력하세요: 7
    *    
   ***
    *
   ***
  *****
    *
   ***
  *****
 *******
    *
    *
    *
 

 

 


 

 

 

TEL (062-226-1777, 010-9891-7244), E-mail (ipmes@ipmes.co.kr)

임베디드 시스템 | PCB 설계 제작 | 펌웨어 개발 | 신호처리 | 응용프로그램