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

발행: (2026년 2월 5일 오후 01:19 GMT+9)
4 분 소요
원문: 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”**를 만나게 됩니다. 여기서는 리스트를 복사할 때 백업 리스트가 예상치 못하게 변경되는 상황을 다루며, 가변 객체 참조의 전형적인 사례를 보여줍니다.

0 조회
Back to Blog

관련 글

더 보기 »

100일 중 13일

그래서 오늘은 다양한 방법을 사용해 코드를 디버깅하는 방법을 배우는 데 시간을 보냈습니다. 최종 프로젝트를 완성하지는 못했지만, 여러 디버깅 기술을 배웠습니다, 예를 들어...

파이썬의 비밀스러운 삶: 팬텀 복제

Why =는 Python에서 실제로 데이터를 복사하지 않습니다. 티모시가 화면을 응시하며 얼굴이 창백해졌습니다. “마가렛? 데이터베이스 절반을 실수로 삭제한 것 같아.”

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

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