Python/Basic programming

Ch03. 선택 구조

information-security-lab 2025. 3. 6. 22:08
목차
Ⅰ. 비교 연산자 / 선택 구조
      1. 비교 연산자
      2. 선택 구조

Ⅱ. 논리 연산자 / 함수
      1. 논리 연산자
      2. 함수     

Ⅲ. 플러스 예제
      1. 온도 변환기
      2. 도형 넓이 비교

Ⅳ. 연습 문제

Ⅴ. 프로그래밍 문제

 


 

Ⅰ. 비교 연산자 / 선택 구조

1. 비교 연산자

연구 1-1)

무작위로 두 정수를 구한 다음, 한 정수를 다른 정수로 나눈 몫과 나머지를 사용자가 맞히는 코드를 작성하시오. (단, 나뉘어지는 정수의 범위는 10 ~ 50 / 나누는 정수의 범위는 2 ~ 10)

 

풀이)

import random

a = random.randint(10, 50)
b = random.randint(2, 10)

quotient = int(input(f'{a}를 {b}로 나눈 몫 : '))
print(a // b == quotient)

remainder = int(input(f'{a}를 {b}로 나눈 나머지 : '))
print(a % b == remainder)


------------------------------------------------------------------------


// '25. 3. 18. 다시 풀었을 때 작성한 코드

/* 위의 코드는 무작위로 제시된 두 정수의 몫과 나머지를 사용자가 연산해서
   답을 적지만 아래의 코드는 무작위로 생성된 두 정수가 무엇인지 모르는
   상태에서 몫과 나머지를 적어서 맞혀야 하는 코드임 */


import random

a = random.randint(10, 50)
b = random.randint(2, 10)

answer1 = int(input("예상되는 몫을 입력하세요 : "))
answer2 = int(input("예상되는 나머지를 입력하세요 : "))

quotient = a // b
remainder = a % b

print(quotient == answer1, "선택한 몫은 :", answer1)
print(remainder == answer2, "선택한 나머지는 :", answer2)
print(f'몫은 {quotient}이고, 나머지는 {remainder}이었습니다.')

 

풀이의 실행 결과는 아래와 같다.

코드 실행 결과

 

2. 선택 구조 

연구 1-2)

입력받은 가격이 10,000원 이상이면 판매가에서 5% 할인해주고 그렇지 않으면 할인해주지 않는 코드를 작성하시오.

 

풀이)

// 풀이 1


price = int(input("구매 가격을 입력하세요 : "))

if price >= 10000:
	price *= 0.95

print("결제할 가격 :", price)



// 풀이 2


price = int(input("구매 가격을 입력하세요 : "))

if price >= 10000:
  price *= 0.95
else:     // else 문은 없어도 되지만 배운 김에 한번 넣어서 만들어봄.
  price

print("결제할 가격 :", price)


------------------------------------------------------------------------


// '25. 03. 18. 다시 풀었을 때 발견한 풀이 2의 문제점 및 수정 사항

/* < '25. 3. 18. 다시 풀었을 때 발견한 풀이 2의 문제점 >
   ① if ~ else 문 내에 변수만 덩그러니 있음.
   ② 특히 else 문 내에는 변수로 무엇을 하는게 아니라 price라는 변수 명만
     있어서 다른 사람이 봤을 때 이게 뭔지 이해할 수 없음. */


price = int(input("구매 가격을 입력하세요 : "))

if price >= 10000:
  price *= 0.95
  print(f'결제 가격 : {price}원')
  
else:     
  print(f'결제 가격 : {price}원')

 

 

연구 1-3)

사용자로부터 입력받은 정수가 홀수인지 짝수인지 판별하는 코드를 작성하시오.

 

풀이)

num = int(input("정수를 입력하세요 : "))

if num % 2 == 0:
	print(f'{num}은 짝수입니다.')
else:
	print(f'{num}은 홀수입니다.')

 

 

연구 1-4)

두 개의 주사위를 굴려서 어느 주사위의 눈이 큰지를 판별하는 코드를 작성하시오.

 

풀이)

import random

dice_a = random.randint(1, 6)
dice_b = random.randint(1, 6)

print(f'주사위 A 값 : {dice_a}, 주사위 B 값 : {dice_b}')

if dice_a > dice_b:
	print("주사위 A 승!")
elif dice_a < dice_b:
	print("주사위 B 승!")
else:
	print("무승부!")

 

 

연구 1-5)

100m 달리기를 3번 한 후 그 기록들 중 가장 빠른 기록이 개인의 기록이 되도록 하는 코드를 작성하시오.

(단, 기록은 난수 생성으로 만들 것.)

 

풀이)

import random

try1 = random.randint(13, 17)
try2 = random.randint(13, 17)
try3 = random.randint(13, 17)

print(f'첫 번째 시도 결과 :', try1)
print(f'두 번째 시도 결과 :', try2)
print(f'세 번째 시도 결과 :', try3)

if try1 < try2:
  if try1 <= try3:
    print("선수 기록 :", try1)
  elif try3 <= try2:
   	print("선수 기록 :", try3)
else:
  if try2 <= try3:
    print("선수 기록 :", try2)
  elif try3 <= try1:
    print("선수 기록 :", try3)
    
    
------------------------------------------------------------------------


// '25. 03. 18. 다시 풀었을 때 발견한 처음 풀이의 문제점과 수정사항

/* if ~ else 문 내의 조건문을 보면 if 문과 elif 문이 있는데 이것을
   else 문으로 수정함 */
   

// 첫 번째 풀이)
// 문제점 : 결과값이 try1 > try2 > try3 인 상황에서 try3 값이 출력되지 않음

import random

try1 = random.randint(15, 20)
try2 = random.randint(15, 20)
try3 = random.randint(15, 20)

print(f'첫 번째 시도 : {try1}초, 두 번째 시도 : {try2}초, 세 번째 시도 : {try3}초')

if try1 <= try2:
  if try1 <= try3:
    print(f'선수 기록 : {try1}초')
  else:
    print(f'선수 기록 : {try3}초')

else:
  if try2 <= try3:
    if try1 >= try2:
      print(f'선수 기록 : {try2}초')

    else:
      print(f'선수 기록 : {try1}초')


// 두 번째 풀이)
// elif 문을 추가하여 try3 <= try2 인 상황을 만들어주니 문제 해결

improt random

try1 = random.randint(15, 20)
try2 = random.randint(15, 20)
try3 = random.randint(15, 20)

print(f'첫 번째 시도 : {try1}초, 두 번째 시도 : {try2}초, 세 번째 시도 : {try3}초')

if try1 <= try2:
  if try1 <= try3:
    print(f'선수 기록 : {try1}초')
  else:
    print(f'선수 기록 : {try3}초')

elif try3 <= try2:
  if try3 <= try1:
    print(f'선수 기록 : {try3}초')
  else:
    print(f'선수 기록 : {try1}초')

else:
  if try2 <= try3:
    if try1 >= try2:
      print(f'선수 기록 : {try2}초')

    else:
      print(f'선수 기록 : {try1}초')

 

 


 

 

Ⅱ. 논리 연산자 / 함수

1. 논리 연산자

연구 1-1)

사용자로부터 입력받은 연도가 윤년인지 평년인지 판별하는 코드를 작성하시오.

 

① 400의 배수인 해 = 윤년

② 4의 배수이면서 100의 배수가 아닌 해 = 윤년

 

풀이)

// 내가 작성한 코드


year = int(input("연도를 입력하세요 : "))

if year % 400 == 0:
  print("윤년입니다.")

elif (year % 4 == 0) & (year % 100 != 0):
  print("윤년입니다.")

else:
  print("평년입니다.")
  


// 답지


year = int(input("연도 : "))

if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)
  print("윤년입니다.")
else:
  print("평년입니다.")

 

다른 프로그래밍 언어도 같이 공부중이라 "and"는 "&&"로, "or" 은 "||" 로 작성해야 되는지 알았는데 이렇게 입력하면 에러가 나온다.

 

에러를 수정하는 도중에 "&" 나 " | "로 적어야 된다는 걸 알게 되었는데 답지를 보니 Python은 논리 연산자를 "and" , "or" 이렇게 알파벳으로 적어도 되는 것같다.

 

 

연구 1-2)

가위, 바위, 보 게임을 만들어보시오.

 

풀이)

// 내가 작성한 코드


import random

user = input("무엇을 낼 건가요?(가위, 바위, 보) : ")
com = random.randint(1, 3)

if com == 1:
  com = '가위'
elif com == 2:
  com = '바위'
else:
  com = '보'

print(f'나 : {user}, 컴퓨터 : {com}')

if user == com:
  print("비겼습니다.")

elif user == '가위':
  if com == '바위':
    print("아쉽네요 ㅠ")
  else:
    print("유저 승!")

elif user == '바위':
  if com == '보':
    print("아쉽네요 ㅠ")
  else:
    print("유저 승!")

else:
  if com == '가위':
    print("아쉽네요 ㅠ")
  else:
    print("유저 승!")



// 답지


import random

user = input("가위, 바위, 보 : ")
com_rand = random.randint(1, 3)
if com_rand == 1:
  computer = '가위'
elif com_rand == 2:
  computer = '바위'
else:
  computer = '보'
print(f'나 : {user}, 컴퓨터 : {computer}')  
  
if user == computer:
  print("무승부")
elif user == '가위' and computer == '보'
  print("승")
elif user == '바위' and computer == '가위'
  print("승")
elif user == '보' and computer == '바위'
  print("승")
else:
  print("패")

 

답지의 코드를 보면 if문과 elif문에 무승부와 승을 하는 조건을 다 넣어버리고 else문을 넣어 무승부와 승 외에는 다 패를 출력하도록 하였다.

 

반면에 내 코드는 모든 경우의 수를 다 따져서 작성했기 때문에 코드가 상당히 늘어진 느낌이다.

 

 

 

2. 함수

연구 2-1)

사용자 정의 함수를 사용하여 사용자로부터 입력받은 두 수의 덧셈, 뺄셈, 곱셈, 나눗셈을 하는 코드를 작성하시오. (단, 사용자 정의 함수에 매개변수와 반환값 존재)

 

풀이)

def add(a, b):
  return a + b
def sub(a, b):
  return a - b
def mul(a, b):
  return a * b
def div(a, b):
  return a / b

a = int(input("정수 a의 값을 입력하세요 : "))
b = int(input("정수 b의 값을 입력하세요 : "))

print(f'{a} + {b} = {add(a, b)}')
print(f'{a} - {b} = {sub(a, b)}')
print(f'{a} * {b} = {mul(a, b)}')
print(f'{a} / {b} = {div(a, b)}')

 

 

연구 2-2)

사용자 정의 함수를 사용하여 사용자로부터 입력받은 두 수의 나눗셈에 대한 몫과 나머지를 구하는 코드를 작성하시오. (단, 사용자 정의 함수에 매개변수와 반환값 존재)

 

풀이)

def div(a, b):
  return a // b, a % b

a = int(input("정수 a의 값을 입력하세요 : "))
b = int(input("정수 b의 값을 입력하세요 : "))

quo, rem = div(a, b)

print(f'두 수의 나눗셈에 대한 몫은 {quo}이고, 나머지는 {rem}입니다.')

 

 


 

 

Ⅲ. 플러스 예제

1. 온도 변환기

섭씨 온도, 화씨 온도 변환)

섭씨 온도를 화씨 온도로 변환해보기

(단, 화씨 온도 = 섭씨 온도 * 9/5 + 32)

 

풀이)

celsius = int(input("섭씨 온도 입력: "))
fahrenheit = celsius * 9 / 5 + 32

print(f'섭씨 {celsius}도 = 화씨 {fahrenheit}도')

 

 

화씨 온도를 섭씨 온도로 변환해보기

(단, 섭씨 온도 = (화씨 온도 - 32) * 5 / 9)

 

풀이)

fahrenheit = int(input("화씨 온도 입력: "))
celsius = (fahrenheit - 32) * 5 / 9

print(f'화씨 {fahrenheit}도 = 섭씨 {celsius}도')

 

 

섭씨 온도 ↔ 화씨 온도 변환기 만들기

 

풀이)

kind = input("온도 종류 입력(섭씨 or 화씨) : ")
temp = int(input(kind + " 온도 입력 : "))

if kind == "섭씨":
  fahrenheit = temp * 9 / 5 + 32
  print(f'섭씨 {kind}도 = 화씨 {fahrenheit}도')

else:
  celsius = (temp - 32) * 5 / 9
  print(f'화씨 {temp}도 = 섭씨 {celsius}도')

 

 

관련 문제 1-1)

실수형 온도를 입력받아 처리하는 섭씨 ↔ 화씨 온도 변환 프로그램을 작성하시오

 

풀이)

kind = input("온도 종류 입력(섭씨 or 화씨) : ")
temp = float(input(kind + " 온도 입력 : "))

if kind == "섭씨":
  fahrenheit = temp * 9 / 5 + 32
  print(f'섭씨 {kind}도 = 화씨 {fahrenheit}도')

else:
  celsius = (temp - 32) * 5 / 9
  print(f'화씨 {temp}도 = 섭씨 {celsius}도')

 

 

도전 문제 1-1)

제곱미터와 평 단위 넓이를 상호 변환하는 프로그램을 작성하시오

 

풀이)

kind = input("넓이 종류 입력(제곱미터 or 평) : ")
area = int(input("넓이 입력 : "))

if kind == "제곱미터":
  pyeong = area * 0.3025
  print(f'{area}제곱미터 = {pyeong}평')

else:
  square = area / 0.3025
  print(f'{area}평 = {square}제곱미터')

 

 

 

2. 도형 넓이 비교

임의의 도형 넓이 비교)

사각형, 삼각형, 원 모양의 종이를 여러 장 두고 2장만 뽑아 어느 종이의 넓이가 큰지 맞히는 프로그램 작성해보기

 

풀이)

def square():
  x = int(input("가로 길이 : "))
  y = int(input("세로 길이 : "))
  return x * y

def triangle():
  x = int(input("밑변 길이 : "))
  y = int(input("높이 길이 : "))
  return x * y / 2

def circle():
  x = int(input("반지름 길이 : "))
  return x * x * 3.14

shape_type1 = input("도형 종류 입력(사각형 or 삼각형 or 원) : ")

if shape_type1 == "사각형":
  area1 = square()

elif shape_type1 == "삼각형":
  area1 = triangle()

else:
  area1 = circle()

shape_type2 = input("도형 종류 입력(사각형 or 삼각형 or 원) : ")

if shape_type2 == "사각형":
  area2 = square()

elif shape_type2 == "삼각형":
  area2 = triangle()

else:
  area2 = circle()

if area1 == area2:
  print(f'{shape_type1}의 넓이 {area1} = {shape_type2}의 넓이 {area2}')

elif area1 > area2:
  print(f'{shape_type1}의 넓이 {area1} > {shape_type2}의 넓이 {area2}')

else:
  print(f'{shape_type1}의 넓이 {area1} < {shape_type2}의 넓이 {area2}')

 

 

관련 문제 2-1)

사각형, 삼각형, 원의 세 도형 중 가장 넓은 도형을 출력하는 프로그램을 작성하시오

 

풀이)

def square():
  x = int(input("가로 길이 : "))
  y = int(input("세로 길이 : "))
  return x * y

def triangle():
  x = int(input("밑변 길이 : "))
  y = int(input("높이 길이 : "))
  return x * y / 2

def circle():
  x = int(input("반지름 길이 : "))
  return x * x * 3.14

shape_type1 = input("도형 종류 입력(사각형 or 삼각형 or 원) : ")

if shape_type1 == "사각형":
  area1 = square()

elif shape_type1 == "삼각형":
  area1 = triangle()

else:
  area1 = circle()

shape_type2 = input("도형 종류 입력(사각형 or 삼각형 or 원) : ")

if shape_type2 == "사각형":
  area2 = square()

elif shape_type2 == "삼각형":
  area2 = triangle()

else:
  area2 = circle()

shape_type3 = input("도형 종류 입력(사각형 or 삼각형 or 원) : ")

if shape_type3 == "사각형":
  area3 = square()

elif shape_type3 == "삼각형":
  area3 = triangle()

else:
  area3 = circle()

print(f'{shape_type1} 넓이 : {area1}, {shape_type2} 넓이 : {area2}, {shape_type3} 넓이 : {area3}')  

if area1 == area2 == area3 or area1 == area2 or area2 == area3 or area1 == area3:
  print("가장 큰 도형이 없습니다.")

elif area1 > area2:
  if area1 > area3:
    print(f'{shape_type1}(넓이 : {area1})이 가장 넓습니다.')
  else:
    print(f'{shape_type3}(넓이 : {area3})이 가장 넓습니다.')

elif area2 > area3:
  if area2 > area1:
    print(f'{shape_type2}(넓이 : {area2})이 가장 넓습니다.')
  else:
    print(f'{shape_type1}(넓이 : {area1})이 가장 넓습니다.')

else:
  print(f'{shape_type3}(넓이 : {area3})이 가장 넓습니다.')

 

 

도전 문제 2-1)

두 사람의 몸무게와 키를 입력받아 체질량 지수를 구해 비교하는 프로그램을 작성하시오

 

① 몸무게 단위 : kg / 키 단위 : m

② 체질량 지수 = 몸무게 / 키 * 키

 

풀이)

// 풀이 1


weight_A = int(input("A의 몸무게 : "))
tall_A = float(input("A의 키 : "))

weight_B = int(input("B의 몸무게 : "))
tall_B = float(input("B의 키 : "))

bmi_A = weight_A / (tall_A * tall_A)
bmi_B = weight_B / (tall_B * tall_B)

print(f'A의 체질량 지수 : {bmi_A:.3f}, B의 체질량 지수 : {bmi_B:.3f}')

if bmi_A == bmi_B:
  print("A와 B의 체질량 지수가 같습니다.")

elif bmi_A > bmi_B:
  print(f'A(체질량 지수 : {bmi_A:.3f})가 B(체질량 지수 : {bmi_B:.3f})보다 체질량 지수가 높습니다.')

else:
  print(f'B(체질량 지수 : {bmi_B:.3f})가 A(체질량 지수 : {bmi_A:.3f})보다 체질량 지수가 높습니다.')



// 풀이 2
// 사용자 지정 함수를 사용한 풀이


def bmi_A():
  weight_A = int(input("A의 몸무게 : "))
  tall_A = float(input("A의 키 : "))
  return weight_A / (tall_A * tall_A) 

def bmi_B():
  weight_B = int(input("B의 몸무게 : "))
  tall_B = float(input("B의 키 : "))
  return weight_B / (tall_B * tall_B)

a = bmi_A()
b = bmi_B()

print(f'A의 체질량 지수 : {a:.3f}, B의 체질량 지수 : {b:.3f}')

if a == b:
  print("A와 B의 체질량 지수가 같습니다.")

elif a > b:
  print(f'A(체질량 지수 : {a:.3f})가 B(체질량 지수 : {b:.3f})보다 체질량 지수가 높습니다.')

else:
  print(f'B(체질량 지수 : {a:.3f})가 A(체질량 지수 : {b:.3f})보다 체질량 지수가 높습니다.')

 

 


 

 

Ⅳ. 연습 문제

연습 문제 1-1)

다음 코드의 실행 결과를 예측하시오

a, b, c = 30, 20, 20

print(a == b)
print(a != b)
print(a > b)
print(b < c)
print(a >= b)
print(b <= c)

 

풀이)

False
True
True
False
True
True

 

 

연습 문제 1-2)

다음 코드의 실행 결과를 예측하시오

a, b = 10, 20
if a != b:
  print("a와 b는 같지 않습니다.")

else:
  print("a와 b는 같습니다.")

 

풀이)

a와 b는 같지 않습니다.

 

 

연습 문제 1-3)

다음 코드의 실행 결과를 예측하시오

a = b = 20
if a > b or a == b:
  print("a는 b보다 크거나 같습니다.")

else:
  print("a는 b보다 작습니다.")

 

풀이)

a는 b보다 크거나 같습니다.

 

 

연습 문제 1-4)

다음 코드의 실행 결과를 예측하시오

def func(x, y):
  if x > y:
    return x - y
  else:
    return y - x

a = func(7, 11)
print(a)

 

풀이)

4

 

 

연습 문제 2-1)

다음 코드를 실행하면 오류가 발생한다. 오류 원인을 설명하고 코드를 수정하시오

a = 100
if a == 100
  print('a 값은 100입니다.')

 

풀이)

두 번째 행의 if 문 마지막에 콜론( : )이 없어서 에러가 뜨므로 콜론( : )을 붙여줘야 함.(에러 : SyntaxError: expected ':' )

a = 100
if a == 100:
  print('a 값은 100입니다.')

 

 

연습 문제 2-2)

다음 코드를 실행하면 오류가 발생한다. 오류 원인을 설명하고 코드를 수정하시오

a = 100
if a == 100:
  print('a 값은 100입니다.')

else if a > 100:
  print('a 값은 100보다 큽니다.')

else:
  print('a 값은 100보다 작습니다.')

 

풀이)

5행을 보면 else if라고 적혀있는데 이것을 elif로 바꿔줘야 한다.

위 코드의 에러는 아래와 같다.

연습 문제 2-2) 오류

a = 100
if a == 100:
  print('a 값은 100입니다.')

elif a > 100:
  print('a 값은 100보다 큽니다.')

else:
  print('a 값은 100보다 작습니다.')

 

 

연습 문제 2-3)

다음 코드를 실행하면 오류가 발생한다. 오류 원인을 설명하고 코드를 수정하시오

a, b = 100, 200
if a > b, a == b:
  print('a 값은 b 값보다 크거나 같습니다.')

else:
  print('a 값은 b 값보다 작습니다.')

 

풀이)

2행을 보면 "a > b"와 "a == b"를 쉼표( , )로 구분하였는데 쉼표( , )가 아닌 and를 써줘서 연결해주거나  "a > b, a == b"를 "a >= b"로 바꿔줘야 함.(에러 : SyntaxError: invalid syntax)

// 풀이 1
// and로 두 조건을 연결


a, b = 100, 200
if a > b and a == b:
  print('a 값은 b 값보다 크거나 같습니다.')

else:
  print('a 값은 b 값보다 작습니다.')
  
  
  
// 풀이 2
// 조건을 a >= b로 수정


a, b = 100, 200
if a >= b:
  print('a 값은 b 값보다 크거나 같습니다.')

else:
  print('a 값은 b 값보다 작습니다.')

 

 

연습 문제 2-4)

다음 코드를 실행하면 오류가 발생한다. 오류 원인을 설명하고 코드를 수정하시오

def func()
  print('Hello Python!')

func()

 

풀이)

1행을 보면 함수를 정의할 때 콜론( : )을 붙이지 않아서 에러가 뜨는 것을 알 수 있다.(에러 : SyntaxError: expected ':')

def func():
  print('Hello Python!')

func()

 

 

연습 문제 2-5)

다음 코드를 실행하면 오류가 발생한다. 오류 원인을 설명하고 코드를 수정하시오

def func():
  return x * 2

a = func(10)
print(a)

 

풀이)

① 1행의 함수 정의에서 func() 함수에 매개변수를 주지 않았는데 4행에서 a라는 변수를 선언할 때 fucn() 함수 내에 갑자기 매개변수가 등장한다.

 

② 2행에서 반환문을 보면 x가 뜬금없이 나오는데 매개변수에 x를 넣어주던가 함수 정의 내에서 변수 x를 선언해줘야 한다. 그런데 아래 코드를 봤을 때, x를 func() 함수의 매개변수로 넣어주는 것이 적절하다.

 

③ 에러 : TypeError: func() takes 0 positional arguments but 1 was given

def func(x):
  return x * 2

a = func(10)
print(a)

 

 

연습 문제 3)

a 값이 10과 같은지 판별하는 코드를 다음과 같이 작성했으나 원하는 결과가 나오지 않았다. 원인을 설명하고 코드를 수정하시오

a = 20
if a = 10:
  print('a 값은 10입니다.')

else:
  print('a 값은 10이 아닙니다.')

 

풀이)

2행의 if 문 조건식에 비교 연산자인 "=="을 사용해야 하는데 대입 연산자( = )를 사용해서 에러가 난 것이다.(에러 : SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? )

a = 20
if a == 10:
  print('a 값은 10입니다.')

else:
  print('a 값은 10이 아닙니다.')

 

 

연습 문제 4)

다음은 한글 계절 명을 영어로 표현하는 프로그램이다. 빈칸을 채워넣으시오

season = input("계절 입력 : ")

[     ①     ] season == '봄':
  print('spring')

[     ②     ] season == '여름':
  print('summer')
  
[     ③     ] season == '가을':
  print('autumn')

[     ④     ] season == '겨울':
  print('winter')
  
[     ⑤     ]:
  print('error')

 

풀이)

① if

② elif

elif

④ elif

⑤ else

 

 

연습 문제 5)

아래의 표를 참고하여 사용자로부터 나이를 입력받아 입장료를 구하는 프로그램을 작성하시오

입장료

 

풀이)

// 풀이 1


age = int(input("나이 입력 : "))

if age < 8:
  print("입장료는 2,000원입니다.")

elif age < 60:
  print("입장료는 5,000원입니다.")

else:
  print("입장료는 2,000원입니다.")
  
  
  
// 풀이 2


age = int(input("나이 입력 : "))

if 8 <= age < 60:
  print("입장료는 5,000원입니다.")
  
else:
  print("입장료는 2,000원입니다.")
  


// 풀이 3


age = int(input("나이 입력 : "))

if age < 8 or age >= 60:
  print("입장료는 2,000원입니다.")

else:
  print("입장료는 5,000원입니다.")

 

 

연습 문제 6)

사용자로부터 입력받은 정수가 3의 배수인지, 5의 배수인지, 3과 5의 배수인지를 판별하는 프로그램을 작성하시오

 

풀이)

num = int(input("정수 입력 : "))

if num % 3 == 0:
  if num % 5 == 0:
    print(f'{num}은 3과 5의 배수입니다.')
  else:
    print(f'{num}은 3의 배수입니다.')

else:
  if num % 5 == 0:
    print(f'{num}은 5의 배수입니다.')
  else:
    print(f'{num}은 3과 5의 배수가 아닙니다.')

 

 

연습 문제 7)

두 개의 물체에 대한 이동 거리와 이동하는데 걸린 시간을 입력받아 둘 중 어느 것이 더 빠른지 알려주는 프로그램을 작성하시오. (단, 속력 = 거리 / 시간)

 

풀이)

distance1 = int(input("1번 물체 이동 거리 : "))
time1 = int(input("1번 물체 이동간 시간 : "))

distance2 = int(input("2번 물체 이동 거리 : "))
time2 = int(input("2번 물체 이동간 시간 : "))

speed1 = distance1 / time1
speed2 = distance2 / time2

if speed1 > speed2 :
  print("1번 물체가 2번 물체보다 빠릅니다.")
  
elif speed1 == speed2 :
  print("1번 물체와 2번 물체의 속력은 같습니다.")

else:
  print("2번 물체가 1번 물체보다 빠릅니다.")

 

 

연습 문제 8)

사용자 정의 함수를 만든 후, 이 함수를 사용해서 초 단위 시간을 시간, 분, 초 단위로 변환하는 프로그램을 작성하시오

 

풀이)

def conversion(second):
  hour = second // 3600
  second = second % 3600
  minute = second // 60
  second = second % 60
  return hour, minute, second

time = int(input("초 단위 시간 입력 : "))
h, m, s = conversion(time)

print(f'{time}초 = {h}시간 {m}분 {s}초')

 

 


 

 

Ⅴ. 프로그래밍 문제

프로그래밍 문제 1)

다음 코드를 if~elif~else 문을 포함하되 기능이 같도록 수정하시오

age = int(input("나이 입력 : "))

if age < 8:
  print("입장료 : 2,000원")

if 8 <= age < 60:
  print("입장료 : 5,000원")

if age >= 60:
  print("입장료 : 3,500원")

 

풀이)

age = int(input("나이 입력 : "))

if age < 8:
  print("입장료 : 2,000원")

elif age < 60:
  print("입장료 : 5,000원")

else:
  print("입장료 : 3,500원")

 

 

프로그래밍 문제 2)

다음 코드에서 논리 연산자와 if~else 문을 포함하되 기능이 같도록 수정하시오

gender = input("성별 입력(남 or 여) : ")
age = int(input("나이 입력 : "))

if gender == "여":
  print("입장료 : 3,000원")

elif age < 8:
  print("입장료 : 3,000원")

else:
  print("입장료 : 3,500원")

 

풀이)

gender = input("성별 입력(남 or 여) : ")
age = int(input("나이 입력 : "))

if gender == "여" or age < 8:
  print("입장료 : 3,000원")

else:
  print("입장료 : 3,500원")

 

 

프로그래밍 문제 3)

네 개의 사용자 지정 함수를 이용해서 사칙연산을 하는 아래의 프로그램을 하나의 사용자 지정 함수를 이용하여 사칙연산하는 프로그램으로 수정하시오

def add(a, b):
  return a + b

def sub(a, b):
  return a - b

def mul(a, b):
  return a * b

def div(a, b):
  return a / b

x = int(input("정수 입력 : "))
y = int(input("정수 입력 : "))

num1 = add(x, y)
num2 = sub(x, y)
num3 = mul(x, y)
num4 = div(x, y)

print(f'{x} + {y} = {num1}')
print(f'{x} - {y} = {num2}')
print(f'{x} * {y} = {num3}')
print(f'{x} / {y} = {num4}')

 

풀이)

def calculation(a, b):
  return a + b, a - b, a * b, a / b

x = int(input("정수 입력 : "))
y = int(input("정수 입력 : "))

num1, num2, num3, num4 = calculation(x, y)

print(f'{x} + {y} = {num1}')
print(f'{x} - {y} = {num2}')
print(f'{x} * {y} = {num3}')
print(f'{x} / {y} = {num4}')

 

 

프로그래밍 문제 4)

아래의 체질량 지수에 따른 비만도 판정 기준을 참고하여 사용자로부터 키와 몸무게를 입력받아 비만도를 판정하는 프로그램을 작성하시오(단, 체질량 지수 = 몸무게 / (키 * 키))

체질량 지수에 따른 비만도

 

풀이)

def bmi():
  height = float(input("키 입력 : "))
  weight = int(input("몸무게 입력 : "))
  return weight / (height * height)

a = bmi()

if a < 18.5:
  print("저체중입니다.")

elif 18.5 <= a < 23:
  print("정상입니다.")

elif 23<= a < 25:
  print("과체중입니다.")

elif 25 <= a < 30:
  print("1단계 비만입니다.")

elif 30 <= a < 35:
  print("2단계 비만입니다.")

else:
  print("고도비만입니다.")

 

 

프로그래밍 문제 5)

세 개의 매개변수를 사용한 사용자 지정 함수를 이용하여 세 개의 성적을 입력받은 후 성적 평균이 70점 이상이면 합격을 출력하고, 이하면 불합격을 출력하는 프로그램을 작성하시오

 

풀이)

def result(score1, score2, score3):
  return (score1 + score2 + score3) / 3

A_score = int(input("A 과목 성적 입력 : "))
B_score = int(input("B 과목 성적 입력 : "))
C_score = int(input("C 과목 성적 입력 : "))

total = result(A_score, B_score, C_score)

print(f'A 과목 : {A_score}점, B 과목 : {B_score}점, C 과목 : {C_score}점')

if total >= 70:
  print("합격입니다.")

else:
  print("불합격입니다.")

 

 

 

끝.