04. 입력과 형변환
input()으로 입력받고 형변환으로 계산하기
목차
스포츠 데이터로 배우는 파이썬 기초
학습 목표
input()함수로 사용자 데이터 입력받기input()의 반환값이 항상str임을 이해int(),float(),str()형변환 함수 활용- 형변환하지 않았을 때 발생하는 오류 체험
1. input() 함수
기본 개념
- 사용자에게 입력을 요청하는 함수
- 중요 : 숫자를 입력해도 반환값은 항상 문자열(
str)
기본 문법
변수 = input('안내 메시지')
주의
input()으로 받은'10'+'20'='1020'(문자열 연결)- 산술 연산을 하려면 반드시 형변환 필요
실습 4-1. input()의 기본 동작 확인
# input()은 항상 문자열 반환
name = input('이름을 입력하세요: ')
print('%s님 반갑습니다.' % name)
print('타입:', type(name))
강지연님 반갑습니다.
타입: <class 'str'>
2. 형변환 (Type Conversion)
형변환 함수
| 함수 | 변환 대상 | 용도 |
|---|---|---|
int() | 정수로 변환 | 경기 수, 득점 계산 |
float() | 실수로 변환 | 키, 몸무게, 타율 계산 |
str() | 문자열로 변환 | 출력 시 문자열 연결 |
TypeError 주의
- 문자열 + 숫자 → 직접
+불가 - 반드시 같은 타입으로 맞춰야 연산 가능
실습 4-2. 형변환 없이 계산 시 오류
# 형변환 없이 문자열 두 개를 더하면?
a = '10'
b = '20'
print(a + b) # '1020' (숫자 30이 아님!)
1020
실습 4-3. 두 수 더하기 (형변환 적용)
int(input(...))→ 입력과 형변환을 한 줄에 처리
# 두 수 더하기
a = int(input('첫 번째 숫자를 입력하세요: '))
b = int(input('두 번째 숫자를 입력하세요: '))
c = a + b
print('합계:', c)
합계: 15
실습 4-4. 선수 정보 입력받아 분석하기
# 선수 정보 입력
name = input('선수 이름: ')
goals_str = input('득점(정수): ')
matches_str = input('경기 수(정수): ')
# 형변환 (str → int)
goals = int(goals_str)
matches = int(matches_str)
# 경기당 평균 득점 계산
avg_goals = goals / matches
# f-string으로 출력
print(f"--- {name} 선수 분석 결과 ---")
print(f"총 득점: {goals}골")
print(f"경기당 평균: {avg_goals:.2f}골")
--- 손흥민 선수 분석 결과 ---
총 득점: 20골
경기당 평균: 2.00골
실습 4-5. float() — 인치를 센티미터로 변환
float(): 소수점이 있는 입력을 실수로 변환
# 인치 → 센티미터 변환
inch = float(input('인치(inch)를 입력하세요: '))
cm = inch * 2.54
print('센티미터: %.2f' % cm)
센티미터: 33.02
3. 실습 응용 — 야구 타율 계산기
목표
input()→int()형변환 → 계산 →if조건 판단- f-string
{avg:.3f}로 소수점 3자리 출력
# 야구 타율 계산기
player = input('선수 이름을 입력하세요: ')
hits = int(input('안타 수 입력: '))
at_bats = int(input('타수 입력: '))
# 타율 계산 (0으로 나누기 방지)
if at_bats > 0:
avg = hits / at_bats
else:
avg = 0.0
# 결과 출력
print(f"{player} 선수의 타율: {avg:.3f}")
if avg > 0.300:
print("축하합니다! 3할 타자입니다!")
else:
print("아쉽지만, 다음 시즌을 기대해봅시다!")
이정후 선수의 타율: 0.266
아쉽지만, 다음 시즌을 기대해봅시다!
연습 문제
Q1. input()으로 받은 두 숫자를 더하기 위해 꼭 필요한 처리는?
- A)
str()변환 B)int()또는float()형변환
Q2. 다음 코드의 출력 결과는?
print('10' + '20')
- A)
30B)'1020'
# 연습 문제 정답
print("Q1 정답: B — input()은 항상 str 반환, 계산하려면 형변환 필수")
print("Q2 정답: B — 문자열끼리 + 는 연결")
Q1 정답: B — input()은 항상 str 반환, 계산하려면 형변환 필수
Q2 정답: B — 문자열끼리 + 는 연결