본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] input()으로 받은 숫자가 왜 계산이 안 되나요? 데이터 타입의 비밀과 형변환 완전 정복

by Papa Martino V 2026. 1. 29.
728x90

input()
input()

 

파이썬을 처음 배우는 입문자들이 가장 당혹스러워하는 순간 중 하나는 분명 숫자를 입력받았음에도 불구하고 계산 결과가 이상하게 나오거나 에러가 발생하는 시점입니다. "10"과 "20"을 더했는데 결과가 "30"이 아닌 "1020"이 되어버리는 마법 같은 현상, 왜 발생하는 걸까요? 오늘 이 글에서는 파이썬 input() 함수의 본질과 데이터 타입(Data Type)의 중요성을 전문적인 시각에서 심도 있게 파헤쳐 보겠습니다.


1. 문제의 원인: 모든 입력은 '문자열'로 통한다

파이썬의 input() 함수는 사용자로부터 입력받은 모든 데이터를 일단 문자열(String) 타입으로 처리합니다. 사용자가 키보드로 '7'을 눌러도 파이썬 엔진은 이를 산술 연산이 가능한 숫자 7이 아닌, 글자 형태인 '7'로 인식합니다. 이 상태에서 더하기(+) 연산을 수행하면 파이썬은 이를 '산술 덧셈'이 아닌 '문자열 연결(Concatenation)'로 판단하여 두 글자를 단순히 이어 붙이게 됩니다. 이것이 바로 계산이 의도대로 되지 않는 근본적인 이유입니다.


2. 데이터 타입의 차이 한눈에 보기

데이터 타입에 따라 파이썬이 연산자를 해석하는 방식은 완전히 달라집니다. 아래 표를 통해 그 차이를 명확히 이해해 봅시다.

구분 문자열 타입 (str) 정수 타입 (int) 비고
표현 방식 '10' (따옴표 있음) 10 (따옴표 없음) 형태의 차이
+ 연산 결과 글자 이어 붙이기 ('1020') 산술 덧셈 (30) 연산의 의미 변화
* 연산 결과 문자열 반복 ('1010') 산술 곱셈 (100) 반복 vs 곱셈

3. 해결책: 명시적 형변환(Type Casting)

이 문제를 해결하기 위해서는 input()으로 받은 값을 우리가 원하는 숫자 타입으로 직접 바꾸어 주어야 합니다. 이를 '형변환'이라고 부릅니다.

  • int(): 문자열을 정수(Integer)로 변환합니다.
  • float(): 문자열을 실수(Float, 소수점이 있는 수)로 변환합니다.

실행 예시 (Sample Example)

# 잘못된 사례: 문자열 연결이 발생함
num1 = input("첫 번째 숫자 입력: ") # 예: 10
num2 = input("두 번째 숫자 입력: ") # 예: 20
print("결과:", num1 + num2) # 출력: 1020

# 올바른 사례: 형변환을 통한 산술 계산
num1 = int(input("첫 번째 숫자 입력: ")) # 입력을 바로 정수로 변환
num2 = int(input("두 번째 숫자 입력: "))
result = num1 + num2
print("정확한 계산 결과:", result) # 출력: 30

4. 전문가의 조언: 입력 오류에 대비하기

실제 서비스를 개발할 때는 사용자가 숫자가 아닌 '문자'를 입력할 가능성도 염두에 두어야 합니다. 예를 들어 int("abc")를 실행하면 파이썬은 ValueError를 발생시키며 프로그램을 중단합니다. 가치가 있는 코드를 작성하기 위해서는 아래와 같은 예외 처리 기술이 권장됩니다.

try:
    user_input = int(input("나이를 입력하세요: "))
    print(f"내년에는 {user_input + 1}살이 되시는군요!")
except ValueError:
    print("오류: 숫자만 입력해 주세요.")

이러한 예외 처리(Exception Handling)는 프로그램의 안정성을 높여주는 전문 개발자의 필수 덕목입니다.


5. 요약 및 결론

파이썬의 input() 함수는 사용자의 편의를 위해 모든 입력을 문자열로 받아들입니다. 따라서 수학적 계산이 필요할 때는 반드시 int()float()를 사용하여 데이터의 성격을 명확히 규정해 주어야 합니다. 데이터 타입의 특성을 이해하는 것은 파이썬 프로그래밍의 기초이자, 논리적인 버그를 줄이는 가장 빠른 길입니다.

 

내용 출처:
- Python Software Foundation. "Built-in Functions - input()", Official Docs.
- W3Schools Python Data Types Tutorial.
- Python.org "Errors and Exceptions" Guide.

728x90