파이썬/문제풀이

[알기 쉽게 해설한 파이썬 with 컴퓨팅 사고력] Chapter 05 연습 문제 풀이

2024. 10. 19. 14:22
728x90

01. 10개의 숫자를 입력받아 0보다 큰 수에 대해서만 전체 합과 평균을 출력하는 프로그램을 while 반복문을 이용하여 작성하시오.

① 조건 추출 :

  • 사용자에게  10개의숫자를 10번 반복하여 입력 받음
  • 숫자가 0보다 큰 수에 대해서만 전체 합과 평균을 출력

② 연계된 논리 결정 :

  • 10개의 숫자를 입력 받음 : 반복 논리
  • 0보다 큰 수에 대해서만 합과 평균을 출력 : 선택 논리

③ 논리구조도 :

num = 0
sum = 0
avg = 0

i = 1

while i <= 10:
    num = int(input("숫자를 입력하세요 : "))
    if (num > 0):
        sum += num
    
    i = i + 1

avg = sum / 10

print("합 :", sum)
print("평균 :", avg)

 

 

02. 1부터 100까지의 합을 구하여 다음과 같이 출력하는 프로그램을 while 반복문을 이용하여 작성하시오.(10을 기준으로 합계를 출력한다.)

더보기

[실행 결과]

 

1-10 : 0000

1-20 : 0000

1-30 : 0000

···

1-100 : 5050

① 조건 추출 :

  • 1부터 100까지 반복하고, 10 단위로 각 합 출력

② 연계된 논리 결정 :

  • 1부터 100까지 반복 : 반복 논리
  • 10 단위로 각 합 출력 : 선택 논리

③ 논리구조도 :

i = 1
j = 1
k = 1
sum = 0

while k <= 10:
    while j <= 100:
        if (j % 10 == 0):
            while i <= j:
                sum += i
                i += 1
            print("1-", j, ":", sum)
        j += 1
    k += 1

 

 

 


 

 

 

03. ① 3+6+9+12+···+N 형태로 3의 배수를 더한다.

      ② 하나의 숫자를 입력받는다.

      ③ 3의 배수의 총합이 입력된 숫자를 넘었을 때의 N 값과 총합계, N 값이 몇 번째인지

-를 while 반복문을 사용해 프로그램을 작성하시오.

더보기

[실행 결과]

 

사용자 입력 : 10

10을 넘었을 때의 값 : 12

10을 넘었을 때까지의 총합계 : 18

10을 넘었을 때까지 몇 번째 3의 배수인가 : 4

① 조건 추출 :

  • 3의 배수를 더한다
  • 사용자가 입력한 숫자를 넘었을 때의 값, 넘었을 때까지의 총합계, 몇 번째 3의 배수인지 출력

② 연계된 논리 결정 :

  • 3의 배수를 더한다 : 반복 논리
  • 사용자가 입력한 숫자를 넘었을 때의 값, 넘었을 때까지의 총합계, 몇 번째 3의 배수인지 출력 : 반복 논리

③ 논리구조도 :

N = int(input("사용자 입력 : "))
i = 3
sum = 0


while i <= N:
    if (i % 3 == 0):
        sum += i
    i += 3

print(N, "을 넘었을 때의 값 :", i)
print(N, "을 넘었을 때까지의 총합계 :", sum)
print(N, "을 넘었을 때까지 몇 번째 3의 배수인가 :", i)

 

 

04. 10개의 정수를 입력받아 합을 구하는 프로그램을 while문을 사용하여 작성하시오. 단 ,짝수 번째에 입력되는 숫자는 양수를 음수로, 음수는 양수로 바꾸어 합을 구하시오.

① 조건 추출 :

입력받는 10개의 정수 중 짝수 번째에 입력되는 숫자는 양수를 음수로, 음수는 양수로 바꾸어 합 출력

② 연계된 논리 결정 :

  • 10개의 정수를 입력받는다 : 반복 논리
  • 짝수 번째에 입력되는 숫자는 양수를 음수로, 음수는 양수로 바꾼다 : 선택 논리

③ 논리구조도 :

num = 0
i = 1
sum = 0

while i <= 10:
    num = int(input("정수를 입력하시오 : "))
    if (i % 2 == 0):
        if (num > 0 and num < 0):
            sum += -num
        else:
            sum += num
    i += 1

print(sum)

 

 

 


 

 

 

05. 사용자로부터 가장 좋아하는 월을 입력받아 그 월에 해당되는 계절을 출력하는 프로그램을 메뉴 형태로 while문을 사용하여 작성하시오.

더보기

[실행 결과]

 

=======================

가장 좋아하는 월은?(종료:0)

=======================

****** 5월 ******

5월은 봄에 해당됩니다

① 조건 추출 :

  • 가장 좋아하는 월을 입력받고, 그 월에 해당되는 계절을 출력한다.

② 연계된 논리 결정 :

  • 사용자가 입력한 월의 계절 출력 : 선택 논리

③ 논리구조도 :

while(True):
    print("============================")
    print("가장 좋아하는 월은?(종료:0)")
    print("============================")

    month = int(input())

    print("******", month, "월 ******")
    
    if (month >= 3 and month <= 5):
        print(month, "월은 봄에 해당됩니다.")
        continue
    elif (month >= 6 and month <= 8):
        print(month, "월은 여름에 해당됩니다.")
        continue
    elif (month >= 9 and month <= 11):
        print(month, "월은 가을에 해당됩니다.")
        continue
    elif (month == 12 or month == 1 or month == 2):
        print(month, "월은 겨울에 해당됩니다.")
        continue
    elif (month == 0):
        print("프로그램 종료")
        break

 

 

06. 사용자로부터 하나의 숫자를 입력받아 1부터 입력받은 숫자 사이의 소수를 구하여 출력하는 프로그램을 작성하시오.

더보기

소수: 1과 자신의 수 이외에는 나뉘지 않는 수(1 제외)

① 조건 추출 :

  • 1부터 입력받은 숫자 사이의 소수 출력

② 연계된 논리 결정 :

  • 1부터 입력받은 숫자 사이의 소수 출력 : 반복 논리

③ 논리구조도 :

num = int(input("숫자 입력 : "))
i = 1


for i in range(i, num+1):
    if (num % i != 0):
        print(i)