종합문제 | ✅저자: 이유정(박사)
📝 문제1] 문자열 이어붙이기 vs 숫자 더하기 두 숫자를 입력받아, 문자열로 이어붙이기와 숫자 덧셈 결과를 출력해보세요.
🖨️ 출력 결과 예시:
입력A> 3
입력B> 5
문자열 자료: 35
숫자 자료: 8
✅정답:
a = input("입력A> ")
b = input("입력B> ")
print("문자열 자료:", a + b) # 문자열 이어붙이기
print("숫자 자료:", int(a) + int(b)) # 숫자 덧셈
📝 문제2] 두 자리 숫자 나누기 두 자리 숫자(예: 45)를 입력받아, 각 자리의 숫자를 분리하여 더한 결과를 출력하세요.
힌트: 문자열 인덱싱 사용
예시 입력: 45 → 4 + 5 = 9
🖨️ 출력 결과 예시:
두 자리 숫자 입력> 45
각 자리 수의 합: 9
✅정답:
num = input("두 자리 숫자 입력> ") # 예: "45"
# 문자열 인덱싱으로 각 자리 접근
digit1 = int(num[0]) # '4' → 4
digit2 = int(num[1]) # '5' → 5
print("각 자리 수의 합:", digit1 + digit2) # 4 + 5 → 9
🔍 해설:
num[0]
, num[1]
을 통해 문자열에서 각 자릿수를 가져옵니다.
각각을 정수형으로 변환하여 더합니다.
📝 문제3] 각각을 정수형으로 변환하여 더합니다. 두 숫자를 입력받아 덧셈, 뺄셈, 곱셈, 나눗셈 결과를 출력하세요.
🖨️ 출력 결과 예시:
입력A> 12
입력B> 4
더하기: 16
빼기: 8
곱하기: 48
나누기: 3.0
✅정답:
a = int(input("입력A> "))
b = int(input("입력B> "))
print("더하기:", a + b)
print("빼기:", a - b)
print("곱하기:", a * b)
print("나누기:", a / b)
📝 문제4] 문자열을 정수로 변환하기
문자열 "100"
을 정수로 바꾸고, 자료형과 함께 출력하세요.
🖨️ 출력 결과 예시:
<class 'int'> 100
✅정답:
num = int("100") # 문자열을 정수로 바꿈
print(type(num), num) # 출력: <class 'int'> 100
🔍 해설:
"100"
은 문자열이므로, int()
함수를 사용하여 정수로 변환합니다.
📝 문제5] 문자열을 실수로 변환하고 곱하기
"3.14"
를 숫자로 바꾸고 2
를 곱한 결과를 출력하세요.
🖨️ 출력 결과:
6.28
✅정답:
pi = float("3.14") # 문자열을 실수로 바꿈
print(pi * 2) # 출력: 6.28
🔍 해설:
"3.14"
는 문자이지만 float()
함수로 실수형으로 변환하여, 곱셈 연산이 가능합니다.
📝 문제6] 사용자 입력 받아 곱하기 사용자에게 두 숫자를 입력받고, 실수로 바꾼 다음 곱한 결과를 출력하세요.
🖨️ 출력 결과:
입력1> 1.5
입력2> 2
곱한 값은 3.0 입니다.
✅정답:
a = float(input("입력1> ")) # 사용자 입력을 실수로 변환
b = float(input("입력2> ")) # 사용자 입력을 실수로 변환
print("곱한 값은", a * b, "입니다.")
🔍 해설:
input()
으로 입력받은 값을 float()
으로 변환하여 소수점까지 정확하게 곱셈 결과를 구할 수 있습니다.
💭직접 풀어보세요.
◽ inch 단위를 cm 단위로 변경하기
📝 문제1] 출력결과와 같이 f-string을 이용하여 보기 좋게 문장을 출력하세요.
1 inch = 2.54
🖨️ 출력결과:
10인치는 25.4cm 입니다.
✅ 정답:
inch = 10
cm = inch * 2.54
print(f"{inch}인치는 {cm}cm 입니다.")
🔍 설명:
inch = 10
"10인치"를 변수에 저장합니다. 인치(inch)는 길이의 단위예요.
cm = inch * 2.54
1인치는 2.54cm이니까, 10인치를 센티미터로 바꾸려면 10 * 2.54 = 25.4가 돼요.
print(f"{inch}인치는 {cm}cm 입니다.")
f-string을 이용해서 보기 좋게 문장을 출력합니다.
📝 문제2] 사용자에게 인치 값을 직접 입력받게 하여 출력결과 처럼 나오게 수정해보세요.
🖨️ 출력결과:
인치를 입력하세요: 5
5.0인치는 12.7cm 입니다.
✅ 정답:
inch = input("인치를 입력하세요: ") # str형 (문자)
inch = float(inch) # 실수형으로 바꾸기
cm = inch * 2.54
print(f"{inch}인치는 {cm}cm 입니다.")
🔍 설명:
input("인치를 입력하세요: ")
사용자가 직접 값을 입력할 수 있도록 해요. 예를 들어 5라고 입력하면 "5"
라는 문자로 저장돼요.
float(inch)
입력한 문자열 "5"
는 계산이 안 되기 때문에 숫자(소수 가능)로 바꿔줘요.
cm = inch * 2.54
입력한 숫자를 센티미터로 변환해요.
print(...)
변환된 결과를 출력해줘요.
📝 문제3] 사용자로부터 숫자를 입력받아 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈) 결과를 출력하세요
🖨️ 출력예시:
첫 번째 숫자> 5
두 번째 숫자> 6
덧셈 결과: 11.0
뺄셈 결과: -1.0
곱셈 결과: 30.0
나눗셈 결과: 0.8333333333333334
✅ 정답 코드:
input_a = float(input("첫 번째 숫자> "))
input_b = float(input("두 번째 숫자> "))
print("덧셈 결과:", input_a + input_b)
print("뺄셈 결과:", input_a - input_b)
print("곱셈 결과:", input_a * input_b)
print("나눗셈 결과:", input_a / input_b)
📝 문제4] 아래 내용을 참조해여 원주율, 반지름, 원의 둘레, 원의 넓이를 출력하세요.
원주율 = 3.14159265 반지름 = 10 원의 둘레 - 공식: 2πr 원의 넓이 - 공식: πr²
✅ 정답 코드:
PI = 3.14159265
r = 10
print("원주율 =", PI)
print("반지름 =", r)
print("원의 둘레 =", 2 * PI * r)
print("원의 넓이 =", PI * r * r)
🖨️ 출력결과:
원주율 = 3.14159265
반지름 = 10
원의 둘레 = 62.831853
원의 넓이 = 314.159265
📝 문제1] 숫자 두 개를 문자열로 합쳐 출력하기
숫자 5
와 7
을 이용해 "5 + 7 = 12"
형태로 출력하세요.
✅ 정답 코드:
a = 5 b = 7
print("{} + {} = {}".format(a, b, a + b))
🖨️ 출력 결과:
5 + 7 = 12
🔍 해설:
{}
3개를 준비하고,
.format(a, b, a+b)
로 각각 첫 번째, 두 번째, 세 번째 자리에 값을 삽입합니다.
a+b
는 숫자 덧셈 결과(12)가 되어 마지막 {}
에 들어갑니다.
📝 문제2] 문자열과 변수 함께 출력하기 이름이 "지민"이고 나이가 21살일 때, "지민님의 나이는 21살입니다." 를 출력하세요.
✅ 정답 코드:
name = "지민"
age = 20
print("{}님의 나이는 {}살입니다.".format(name, age))
🖨️ 출력 결과:
지민님의 나이는 21살입니다.
🔍 해설:
{}
를 사용하여 문장 안에 name
, age
변수를 삽입합니다.
중간에 따옴표나 + 연산자를 쓰지 않아도 자연스럽게 이어집니다.
📝 문제3] 사용자 입력으로 문장 만들기 사용자에게 과일 이름과 개수를 입력받아 "사과를 3개 샀어요." 처럼 출력하세요.
✅ 정답 코드:
fruit = input("과일 이름: ") # 예: 사과
count = input("개수: ") # 예: 3
print(fruit)
print(count)
print("{}를 {}개 샀어요.".format(fruit, count))
🖨️ 예시 실행:
과일 이름: 사과
개수: 3
사과를 3개 샀어요.
🔍 해설:
input()
함수는 항상 문자열(str)로 입력값을 받습니다.
별도의 변환 없이 format()
함수에 그대로 전달할 수 있습니다.
{}
를 통해 과일 이름과 개수를 순서대로 자연스럽게 넣어 출력합니다.
📝 문제1] IndexError
수정하기
아래의 코드는 IndexError
가 발생하는데 오류가 발생하지 않도록 수정하세요.
print("제품명: {}, 가격: {}, 수량: {}".format("노트북", 150만원))
✅ 정답 코드:
print("제품명:{},가격:{},수량:{}".format("노트북","150만원","3개"))
🖨️ 출력 결과:
제품명: 노트북, 가격: 150만원, 수량: 3개
🔍 해설:
원본 코드에서는 값이 2개뿐이라 마지막 {}
에서 에러가 발생했습니다.
수정된 코드에서는 .format()
에 총 3개의 값을 제공하여 {}
의 개수와 맞췄습니다.
📝 문제2] 적절한 값 삽입하기
아래 문장을 출력하기 위한 format() 코드를 작성해보세요.
🖨️ 출력 결과:
"서울에서 부산까지 거리는 약 400km입니다."
✅ 정답 코드:
print("{}에서 {}까지 거리는 약 {}km입니다.".format("서울", "부산", 400))
🖨️ 출력 결과:
서울에서 부산까지 거리는 약 400km입니다.
🔍 해설:
{}
는 총 3개, .format()
에도 총 3개의 값이 정확하게 맞추어 들어갑니다.
순서대로 도시이름과 거리 숫자를 넣어주어 자연스러운 문장을 만듭니다.
💬 보충설명 (현업 팁):
format()
을 사용할 때는 작성한 문장과 값이 많아질수록 개수가 맞지 않는 실수가 쉽게 발생하므로,
코드를 작성한 뒤 반드시 테스트를 통해 확인하는 습관을 갖는 것이 중요합니다.
📝 문제1] 위 코드의 출력 결과는?
num = 52.0
print("Fixed point: {:.3f}".format(num))
① 52
② 52.0
③ 52.000000
④ 52.000
✅ 정답: ④ 52.000
📝 문제2] 아래 중 출력 결과로 알맞은 것은?
num = 52.273
print("{:.2f}".format(num))
print("{:g}".format(num))
① 52.27
/ 52.273
② 52.27
/ 52.27
③ 52.27
/ 52.3
④ 52.27
/ 52
✅ 정답: ① 52.27
/ 52.273
💬 :.2f
는 소수점 2자리까지
💬 :g
는 가능한 한 간단한 형식이기 때문에 불필요한 0은 생략, 이 경우 그대로 52.273
입니다.
📝 문제3] 지수 표현과 일반 표현 비교, 출력 결과 중 맞는 것은?
num = 0.000012345
print("{:e}".format(num))
print("{:g}".format(num))
① 0.000012345
/ 0.000012345
② 1.234500e-05
/ 1.2345e-05
③ 12345e-9
/ 12.345
④ 1.23
/ 0.000012345
✅ 정답: ② 1.234500e-05
/ 1.2345e-05
💬 :e
는 지수 표기 (e-지수)
💬 :g
도 작거나 크면 지수 표기로 표현하지만 간단한 형식으로 보여줌
(소수점 생략 등)