파이썬의 비밀스러운 삶: 조용한 타입 (타입 캐스팅)

발행: (2026년 2월 5일 오후 01:19 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

The Problem

Timothy는 간단한 추측 게임을 만들었지만, 정답 번호를 입력해도 프로그램이 틀렸다고 알려줍니다.

# Timothy's Guessing Game
secret_number = 7

guess = input("Guess the number (1-10): ")

if guess == secret_number:
    print("You won! Amazing!")
else:
    print(f"Sorry, you guessed {guess}, but the number was {secret_number}.")

Output

Guess the number (1-10): 7
Sorry, you guessed 7, but the number was 7.

Why It Happens: Strong Typing in Python

  • input()은 항상 문자열(str)을 반환합니다.
  • secret_number정수(int)입니다.

Python은 서로 다른 타입의 값을 비교할 때 암시적 타입 변환을 수행하지 않습니다. 따라서 guess == secret_number 비교는 '7'(문자열)과 7(정수)이 다르기 때문에 False가 됩니다.

비유: 개의 사진과 실제 개를 비교하는 것— 겉보기엔 비슷해 보여도 근본적으로 다른 객체입니다.

The Fix: Explicit Type Casting

input() 호출을 int()(또는 적절한 다른 캐스트)로 감싸서 입력된 텍스트를 정수로 변환합니다.

# Timothy's Fixed Game
secret_number = 7

# Convert the input string to an integer
guess = int(input("Guess the number (1-10): "))

if guess == secret_number:
    print("You won! Amazing!")
else:
    print(f"Sorry, you guessed {guess}, but the number was {secret_number}.")

Output

Guess the number (1-10): 7
You won! Amazing!

Important Note

사용자가 "seven"처럼 숫자가 아닌 단어를 입력하면 int()ValueError를 발생시킵니다. 이러한 경우를 부드럽게 처리하는 방법(예: try/except 또는 입력 검증)은 다음 강의에서 다룰 주제입니다.

Quick Reference: Common Casts

  • int("5")5 (정수)
  • float("5")5.0 (소수)
  • str(5)"5" (문자열, 연결이나 출력에 유용)

int("hello")를 시도하면 ValueError가 발생합니다.

Takeaways

  • 규칙: input()은 사용자가 무엇을 입력하든 문자열을 반환합니다.
  • 해결책: 기대하는 데이터 타입에 맞게 명시적 타입 캐스팅(int(), float() 등)을 사용합니다.
  • 이점: Python의 엄격한 타입 시스템은 타입이 맞지 않는 연산을 방지해 더 명확하고 신뢰성 있는 코드를 작성하도록 돕습니다.

Looking Ahead

다음 에피소드에서 Timothy는 **“The Phantom Copy”**를 만나게 됩니다. 여기서는 리스트를 복사할 때 백업 리스트가 예상치 못하게 변경되는 상황을 다루며, 가변 객체 참조의 전형적인 사례를 보여줍니다.

Back to Blog

관련 글

더 보기 »

Python을 어떻게 배울 수 있나요 (무료)

안녕하세요! 저는 기술 분야에 처음이며 코딩 여정을 시작하기 위해 Python을 배우고 싶습니다. 이미 HTML을 조금 배웠지만, 웹 개발을 즐기지 못한다는 것을 깨달았습니다.

파이썬의 비밀스러운 삶: 숨겨진 Return

왜 당신의 함수 결과가 None인지 — 그리고 이를 해결하는 방법. 티모시가 화면을 보며 환하게 웃었다. 그는 방금 pricing script를 깔끔하게 refactoring한 것이다,…