Ch03. 선택 구조
목차
Ⅰ. 비교 연산자 / 선택 구조
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로 바꿔줘야 한다.
위 코드의 에러는 아래와 같다.
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("불합격입니다.")
끝.
