input()은 string 이다!
input() 함수는 항상 문자열(string)을 반환한다는 것은 Python 프로그래밍에서 매우 중요한 개념입니다. 이를 이해하지 못하면 자주 오류를 범할 수 있습니다. 몇 가지 대표적인 오류 예시와 함께 설명하겠습니다.
숫자 덧셈 오류
a = input("첫 번째 숫자를 입력하세요: ")
b = input("두 번째 숫자를 입력하세요: ")
result = a + b
print("합계:", result)
이 코드를 실행하고 사용자가 3과 4를 입력했다고 가정해봅시다.
예상 결과: 7
실제 결과: 34
이 오류가 발생하는 이유는 input()이 문자열을 반환하기 때문입니다. 따라서 a + b는 숫자의 덧셈이 아니라 문자열의 연결(concatenation)을 수행합니다.
비교 연산 오류
age = input("나이를 입력하세요: ")
if age > 18:
print("성인입니다.")
else:
print("미성년자입니다.")
이 코드를 실행하고 사용자가 20을 입력했다고 가정해봅시다.
예상 결과: "성인입니다."
실제 결과: "미성년자입니다." (또는 TypeError 발생)
이 오류는 문자열 "20"과 정수 18을 비교하려고 하기 때문에 발생합니다. Python에서는 문자열과 정수를 직접 비교할 수 없습니다.
수학 연산 오류
num = input("숫자를 입력하세요: ")
square = num ** 2
print("입력한 숫자의 제곱:", square)
이 코드를 실행하고 사용자가 5를 입력했다고 가정해봅시다.
예상 결과: 25
실제 결과: TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
이 오류는 문자열에 대해 제곱 연산을 수행하려고 했기 때문에 발생합니다.
해결 방법
이러한 오류들을 해결하기 위해서는 input()으로 받은 값을 적절한 타입으로 변환해야 합니다. 예를 들어
a = int(input("첫 번째 숫자를 입력하세요: "))
b = int(input("두 번째 숫자를 입력하세요: "))
result = a + b
print("합계:", result)
age = int(input("나이를 입력하세요: "))
if age > 18:
print("성인입니다.")
else:
print("미성년자입니다.")
num = int(input("숫자를 입력하세요: "))
square = num ** 2
print("입력한 숫자의 제곱:", square)
이렇게 int() 함수를 사용하여 입력받은 문자열을 정수로 변환하면 원하는 대로 코드가 작동합니다.input()이 문자열을 반환한다는 것을 항상 기억하고, 필요에 따라 적절한 타입으로 변환하는 것이 중요합니다. 이는 많은 초보자들이 자주 겪는 문제이므로, 이 개념을 잘 이해하시면 많은 오류를 방지할 수 있습니다.
'TIL' 카테고리의 다른 글
[TIL] 자료 구조와 배열 (Python) 2편 - 리스트와 튜플 (3) | 2024.09.09 |
---|---|
[TIL] 자료 구조와 배열 (Python) 1편 - 기본 개념 (0) | 2024.09.08 |
[TIL] 좋아요 버튼 누르면 버튼 컬러가 변경되는 기능 구현하기 (1) | 2024.08.31 |
[TIL] 자바스크립트(JavaScript) 기초 개념 - 변수, 블록 스코프, 함수 스코프, 호이스팅, 일시적 사각지대 (1) | 2024.08.27 |
[TIL] HTML, CSS (0) | 2024.08.26 |