파이썬 프로그래밍의 세계에 오신 것을 환영합니다. 코드의 기본 재료인 변수와 데이터 타입을 이해하는 것은 견고한 프로그램을 만드는 첫걸음입니다. 이번 장에서는 이 필수 개념들을 쉽고 명확하게 다루어 보겠습니다.
핵심 요약
- 변수란? 값을 저장하는 이름표 달린 상자입니다.
- 데이터 타입은? 저장하는 값의 종류를 정의합니다 (숫자, 문자, 불리언 등).
- 중요성: 데이터 관리 및 프로그램 로직 구현의 핵심입니다.
- 예시: 간단한 메모장 프로그램을 만들며 실제 변수와 데이터 타입을 적용해봅니다.
- 작성자 팁: 변수명은 그 의미를 명확히 담아 작성하는 것이 가독성 높은 코드를 만드는 데 중요합니다.
변수, 왜 중요할까요?
변수는 프로그램에서 데이터를 저장하고 관리하는 데 필수적인 요소입니다.
제가 처음 코드를 배울 때, 변수는 마치 이름표가 붙은 상자 같다고 생각했습니다. 상자 안에 값을 넣고, 이름표를 통해 그 값을 언제든지 꺼내 쓸 수 있는 것이죠. 예를 들어, 여러분의 이름, 나이, 사는 지역 같은 정보를 컴퓨터가 기억하고 싶다면 어떻게 해야 할까요? 바로 변수를 사용해야 합니다. 파이썬에서 변수는 매우 유연하게 작동하여, 한 번 정의한 변수에 다른 종류의 값(숫자, 문자 등)을 다시 할당할 수도 있습니다.
저는 데이터 분석을 할 때 수많은 데이터를 다룹니다. 예를 들어, 특정 고객의 구매액을 계산하거나, 특정 상품의 재고 수량을 추적할 때 변수를 사용합니다. 만약 변수가 없다면, 모든 숫자를 그때그때 직접 입력해야 할 것이고, 코드는 복잡해지고 유지보수가 불가능해질 것입니다. 변수는 코드의 가독성을 높이고, 데이터의 재사용을 가능하게 하며, 복잡한 로직을 단순화하는 데 결정적인 역할을 합니다. 2026년 현재, 자동화 스크립트 작성 시 변수를 효율적으로 관리하는 것은 작업 시간을 최대 30%까지 단축시키는 중요한 노하우 중 하나입니다. [cite: 작성자 직접 경험]
파이썬에서 변수를 선언하는 방법은 아주 간단합니다. 여러분이 원하는 변수 이름을 왼쪽에, 저장하고 싶은 값을 오른쪽에 두고 등호(=)로 연결하면 됩니다.
# 예시: 간단한 변수 선언
name = "클로드"
age = 3
score = 95.5
print(f"이름: {name}, 나이: {age}세, 점수: {score}점")
이 코드가 하는 일: name, age, score라는 변수를 선언하고 각각 문자열, 정수, 실수 값을 할당한 후 출력합니다.
여기서 name은 “클로드”라는 문자열 값을, age는 숫자 3을, score는 실수 95.5를 가지고 있습니다. 이 값들은 프로그램이 실행되는 동안 필요에 따라 변경될 수 있습니다. 다음 장인 조건문과 반복문 활용에서 변수가 어떻게 조건과 함께 사용되는지 더 자세히 알아볼 수 있습니다.
데이터 타입, 어떤 종류가 있나요?
파이썬에서 데이터 타입은 값의 성격을 정의하며, 올바른 타입 이해는 효율적인 코드 작성의 첫걸음입니다.
변수에 값을 저장할 때, 그 값은 특정 ‘형태’를 가집니다. 이를 데이터 타입(Data Type)이라고 부릅니다. 파이썬은 여러 가지 데이터 타입을 내장하고 있으며, 가장 자주 사용하는 몇 가지를 알아보겠습니다.
숫자 (Numbers)
숫자는 우리가 아는 정수(소수점 없는 숫자)와 실수(소수점 있는 숫자)로 나뉩니다. 파이썬에서는 이를 int와 float로 구분합니다.
# 정수 (Integer)
my_integer = 100
print(f"정수: {my_integer}, 타입: {type(my_integer)}")
# 실수 (Float)
my_float = 3.14
print(f"실수: {my_float}, 타입: {type(my_float)}")
이 코드가 하는 일: my_integer와 my_float 변수에 각각 정수와 실수를 할당하고, 그 값과 타입을 출력합니다. type() 함수는 변수의 데이터 타입을 알려줍니다.
데이터 분석을 할 때 정수와 실수를 명확히 구분하는 것이 중요합니다. 예를 들어, 사람의 수는 정수여야 하고, 평균 키나 몸무게는 실수여야 합니다. 간혹 데이터를 불러올 때 숫자인데 문자열로 인식되는 경우가 있는데, 이럴 때는 명시적으로 int()나 float() 함수를 사용해 타입을 변환해 주어야 합니다.
문자열 (Strings)
문자열은 텍스트 데이터를 다룰 때 사용합니다. 큰따옴표("")나 작은따옴표('')로 감싸서 표현합니다.
# 문자열 (String)
greeting = "안녕하세요, 클로드!"
message = 'Python 프로그래밍은 즐거워요.'
print(f"인사말: {greeting}, 타입: {type(greeting)}")
print(f"메시지: {message}, 타입: {type(message)}")
# 문자열 연결
full_message = greeting + " " + message
print(f"합쳐진 메시지: {full_message}")
이 코드가 하는 일: 두 개의 문자열 변수를 선언하고 출력하며, 두 문자열을 연결하여 새로운 문자열을 만듭니다. 문자열 연결은 + 연산자를 사용합니다.
제가 GUI 개발을 할 때, 텍스트 상자에 사용자 입력을 받거나 버튼에 표시할 텍스트를 만들 때 문자열을 많이 사용합니다. 파이썬의 문자열은 다루기 쉬워서, 여러 문자열을 조합하거나 특정 부분을 추출하는 작업이 매우 편리합니다. 더 나아가 효과적인 프롬프트 작성법 장에서 문자열을 활용해 AI에게 더 좋은 지시를 내리는 방법을 배울 수 있습니다.
불리언 (Booleans)
불리언은 True 또는 False 두 가지 값만 가질 수 있는 데이터 타입입니다. 주로 어떤 조건이 참인지 거짓인지를 판단할 때 사용됩니다.
# 불리언 (Boolean)
is_active = True
has_permission = False
print(f"활성 상태: {is_active}, 타입: {type(is_active)}")
print(f"권한 여부: {has_permission}, 타입: {type(has_permission)}")
# 비교 연산 결과
is_greater = (10 > 5)
print(f"10이 5보다 큰가?: {is_greater}, 타입: {type(is_greater)}")
이 코드가 하는 일: 두 개의 불리언 변수를 선언하고, 숫자 비교 연산의 결과로 불리언 값을 얻어 출력합니다.
자동화 스크립트를 작성할 때 특정 조건이 충족되었는지 여부를 판단하는 데 불리언 값을 자주 사용합니다. 예를 들어, ‘파일이 존재하는가?’, ‘네트워크 연결이 되어 있는가?’ 같은 질문에 대한 답을 불리언으로 받아서 다음 동작을 결정할 수 있습니다.
변수 이름, 어떻게 지어야 할까요?
변수 이름은 코드의 가독성을 결정하는 중요한 요소이므로, 의미를 명확히 담아 작성해야 합니다.
변수를 선언할 때 가장 중요한 것 중 하나는 ‘이름’입니다. 좋은 변수 이름은 코드를 읽는 사람이 코드를 더 쉽게 이해하도록 돕습니다. 제 경험상, 동료들과 협업할 때 변수 이름 때문에 오해가 생겨 디버깅 시간이 늘어나는 경우가 있었습니다. 그래서 저는 변수 이름을 신중하게 짓는 편입니다.
- 의미 있게: 변수가 어떤 값을 저장하는지 명확히 나타내야 합니다. 예를 들어, 사용자의 이름을 저장한다면
a보다는user_name이 좋습니다. - 알파벳, 숫자, 밑줄(
_)만 사용: 변수 이름은 알파벳으로 시작해야 하며, 숫자나 밑줄을 포함할 수 있습니다. 특수문자나 공백은 사용할 수 없습니다. - 소문자로 시작: 일반적으로 변수 이름은 소문자로 시작합니다. 여러 단어로 구성될 때는 밑줄로 연결하는
snake_case방식을 많이 사용합니다. 예:total_price,item_count. - 예약어 사용 금지:
if,for,while등 파이썬에서 특별한 의미를 가지는 예약어는 변수 이름으로 사용할 수 없습니다.
# 좋은 변수 이름 예시
user_age = 25
product_name = "스마트 워치"
is_admin_user = True
# 좋지 않은 변수 이름 예시 (피해야 할 것)
x = 25 # 무슨 값인지 알기 어렵습니다.
ProductName = "스마트 워치" # PascalCase는 보통 클래스 이름에 사용합니다.
# if = True # 예약어는 변수 이름으로 사용할 수 없습니다. (실행 시 오류 발생)
이 코드가 하는 일: 좋은 변수 이름과 피해야 할 변수 이름의 예시를 보여줍니다. 주석을 통해 각 예시의 의미를 설명합니다.
변수 이름을 잘 짓는 것은 코드 문서화 표준의 첫걸음이기도 합니다. 처음에는 시간이 걸리더라도 좋은 습관을 들이는 것이 장기적으로 코드의 품질을 높이는 길입니다.
간단한 메모장 프로그램 만들어보기
이제 변수와 데이터 타입을 활용하여 간단한 메모장 프로그램을 만들어보겠습니다. 이 프로그램을 통해 앞에서 배운 개념들이 실제로 어떻게 사용되는지 체험할 수 있을 것입니다. 필요한 것은 Python 3.11 버전이 설치된 컴퓨터뿐입니다. 별도의 라이브러리 설치는 필요 없습니다.
1단계: 사용자 입력 받기
먼저 사용자에게 메모 내용을 입력받는 기능을 추가합니다. input() 함수를 사용하여 사용자 입력을 받을 수 있습니다.
# memo_app.py 파일 생성 후 아래 내용 작성
print("간단 메모장 프로그램 (2026년 버전)")
# 사용자에게 메모 내용 입력받기
user_memo = input("메모 내용을 입력하세요: ")
# 현재 날짜와 시간 가져오기 (표준 라이브러리 datetime 활용)
import datetime
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"\n입력하신 메모: {user_memo}")
print(f"작성 시간: {current_time}")
이 코드가 하는 일: 프로그램 시작 메시지를 출력하고, input() 함수로 사용자로부터 메모를 입력받아 user_memo 변수에 저장합니다. 또한, datetime 모듈을 사용하여 현재 시간을 가져와 출력합니다.
여기서 user_memo는 문자열 타입의 값을 가지게 됩니다. current_time도 마찬가지로 특정 형식의 문자열로 변환되었습니다. datetime 모듈은 파이썬 표준 라이브러리의 강력함을 보여주는 좋은 예시입니다.
2단계: 메모를 파일에 저장하기
입력받은 메모와 시간을 텍스트 파일로 저장하는 기능을 추가합니다. 파일을 다루는 방법은 매우 중요하며, 자동화 스크립트 작성에 필수적인 요소입니다.
# 이전 코드에 이어서 작성합니다.
# 메모 내용을 파일에 저장합니다.
file_name = "my_memo.txt" # 저장할 파일 이름 변수
try:
with open(file_name, 'a', encoding='utf-8') as file:
file.write(f"--- 메모 ({current_time}) ---\n")
file.write(user_memo + "\n\n")
print(f"\n메모가 '{file_name}' 파일에 성공적으로 저장되었습니다.")
except IOError as e:
print(f"파일 저장 중 오류가 발생했습니다: {e}")
except Exception as e:
print(f"예상치 못한 오류가 발생했습니다: {e}")
이 코드가 하는 일: my_memo.txt라는 파일에 사용자 메모와 작성 시간을 추가('a' 모드)로 저장합니다. 파일 입출력 시 발생할 수 있는 오류를 try-except 문으로 처리합니다.
file_name 변수를 사용하면 파일 이름을 쉽게 변경할 수 있습니다. with open(...) as file: 구문은 파일을 안전하게 열고 닫는 표준적인 방법입니다. encoding='utf-8'을 사용하면 한글 깨짐 없이 내용을 저장할 수 있습니다. 파일을 다룰 때 혹시 발생할 수 있는 에러 핸들링 기본기도 함께 적용했습니다.
흔한 실수: 타입 불일치 오류
만약 숫자를 문자열에 직접 연결하려고 하면 TypeError가 발생할 수 있습니다.
# 잘못된 예시 (TypeError 발생)
# age = 20
# message = "내 나이는 " + age + "살입니다." # TypeError: can only concatenate str (not "int") to str
# print(message)
# 올바른 해결법: f-string 사용 또는 str() 함수로 타입 변환
age = 20
message_fstring = f"내 나이는 {age}살입니다." # f-string은 타입을 자동으로 변환해줍니다.
message_str_cast = "내 나이는 " + str(age) + "살입니다." # str() 함수로 명시적 변환
print(message_fstring)
print(message_str_cast)
이 코드가 하는 일: 숫자와 문자열을 직접 연결할 때 발생하는 TypeError를 보여주고, f-string이나 str() 함수를 사용하여 올바르게 타입 변환하는 방법을 제시합니다.
특히 GUI 개발에서 사용자 입력은 대부분 문자열로 들어오기 때문에, 숫자로 계산해야 할 경우 반드시 int()나 float()으로 변환해주는 습관을 들이는 것이 좋습니다. 그렇지 않으면 예상치 못한 오류에 직면할 수 있습니다.
완성된 메모장 코드
아래는 위에서 설명한 모든 내용을 합친 완성된 메모장 프로그램 코드입니다. 이 코드를 복사하여 memo_app.py 파일로 저장한 뒤 파이썬으로 실행해 보세요.
# memo_app.py
import datetime # 날짜 및 시간 처리를 위한 모듈 임포트
print("--- 간단 메모장 프로그램 (2026년 버전) ---")
print("이 프로그램은 여러분의 메모를 my_memo.txt 파일에 저장합니다.\n")
# 1. 사용자에게 메모 내용 입력받기
user_memo = input("메모 내용을 입력하세요: ")
# 2. 현재 날짜와 시간 가져오기 및 포맷팅
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 3. 입력받은 메모와 시간을 출력하여 사용자에게 확인시켜주기
print(f"\n--- 확인 ---")
print(f"입력하신 메모: {user_memo}")
print(f"작성 시간: {current_time}")
print(f"----------------\n")
# 4. 메모 내용을 파일에 저장하기
file_name = "my_memo.txt" # 저장할 파일 이름
try:
# 'a' 모드는 파일이 없으면 생성하고, 있으면 기존 내용 뒤에 추가합니다.
# encoding='utf-8'은 한글 등 다양한 문자를 올바르게 처리하기 위함입니다.
with open(file_name, 'a', encoding='utf-8') as file:
file.write(f"--- 메모 ({current_time}) ---\n")
file.write(user_memo + "\n\n")
print(f"✨ 메모가 '{file_name}' 파일에 성공적으로 저장되었습니다. ✨")
print(f"파일을 열어 내용을 확인해 보세요!")
except IOError as e:
# 파일 입출력 관련 오류 발생 시 처리
print(f"🚨 파일 저장 중 오류가 발생했습니다: {e}")
except Exception as e:
# 그 외 예상치 못한 오류 발생 시 처리
print(f"🚨 예상치 못한 오류가 발생했습니다: {e}")
print("\n--- 프로그램 종료 ---")
이 코드가 하는 일: 사용자에게 메모를 입력받아 현재 시간과 함께 my_memo.txt 파일에 추가 저장하고, 성공 여부를 사용자에게 알려줍니다. 파일 입출력 오류도 처리합니다.
자주 묻는 질문 (FAQ)
-
Q1: 변수와 상수의 차이는 무엇인가요?
A: 파이썬에는 다른 언어처럼const키워드를 사용한 명시적인 상수는 없습니다. 하지만 관례적으로 변수 이름을 모두 대문자로 작성하여 상수처럼 사용하는 경우가 많습니다(예:PI = 3.14). 이러한 변수는 값을 변경하지 않겠다는 개발자의 약속입니다. -
Q2: 파이썬은 왜 데이터 타입을 명시적으로 선언하지 않나요?
A: 파이썬은 ‘동적 타이핑(Dynamic Typing)’ 언어입니다. 즉, 변수를 선언할 때 타입을 미리 지정하지 않고, 값이 할당될 때 그 값에 따라 자동으로 타입이 결정됩니다. 이는 코드를 더 간결하게 만들어 주지만, 때로는 예상치 못한 타입 오류를 발생시킬 수도 있으므로 주의해야 합니다. -
Q3: 변수 이름에 한글을 사용해도 되나요?
A: 기술적으로 파이썬 3 버전부터 변수 이름에 한글을 포함한 유니코드 문자를 사용할 수 있습니다. 그러나 일반적으로 코드의 가독성과 국제적인 협업을 위해 영어 알파벳으로 변수 이름을 작성하는 것을 권장합니다. 저 역시 현업에서는 모두 영어로 변수 이름을 작성합니다.
변수와 데이터 타입을 이해하는 것은 파이썬 프로그래밍의 가장 기본적이면서도 강력한 시작점입니다. 오늘 배운 내용을 바탕으로 자신만의 코드를 작성하며 개념을 더욱 탄탄하게 다져보시기 바랍니다. 다음 장에서는 프로그램의 흐름을 제어하는 조건문과 반복문 활용에 대해 알아보겠습니다.
참고 자료
- [1] Python 공식 문서 — https://docs.python.org/ko/3/
- [2] Claude Code 공식 문서 — https://docs.claude.com/en/docs/claude-code/overview
#파이썬기초, #변수, #데이터타입, #Python초보, #코딩입문, #자동화스크립트, #메모장만들기, #파이썬튜토리얼, #클로드코드
