04 — LECTURE ·PY-04 ·2026.02.04

04. 입력과 형변환

input()으로 입력받고 형변환으로 계산하기

목차
  1. 학습 목표
  2. 1. input() 함수
  3. 기본 개념
  4. 기본 문법
  5. 주의
  6. 실습 4-1. input()의 기본 동작 확인
  7. 2. 형변환 (Type Conversion)
  8. 형변환 함수
  9. TypeError 주의
  10. 실습 4-2. 형변환 없이 계산 시 오류
  11. 실습 4-3. 두 수 더하기 (형변환 적용)
  12. 실습 4-4. 선수 정보 입력받아 분석하기
  13. 실습 4-5. float() — 인치를 센티미터로 변환
  14. 3. 실습 응용 — 야구 타율 계산기
  15. 목표
  16. 연습 문제

스포츠 데이터로 배우는 파이썬 기초

학습 목표

  • 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) 30 B) '1020'
# 연습 문제 정답
print("Q1 정답: B — input()은 항상 str 반환, 계산하려면 형변환 필수")
print("Q2 정답: B — 문자열끼리 + 는 연결")
Q1 정답: B — input()은 항상 str 반환, 계산하려면 형변환 필수
Q2 정답: B — 문자열끼리 + 는 연결