Topic 3: 변수 - 데이터를 저장하고 관리하기 📦
🎯 학습 목표
변수의 개념을 이해하고 올바르게 사용하여 데이터를 저장하고 조작할 수 있으며, 의미있는 변수명을 작성할 수 있습니다.
🧠 변수의 필요성
기억하지 못하는 프로그램의 문제점
print("안녕하세요, 김철수님!")
print("당신의 나이는 25세네요.")
# 25라는 정보가 기억되지 않음
# 매우 긴 코드 이후에...
print("이 영화는 25세 이상만 관람할 수 있어요.")
# 매우 긴 코드 이후에...
print("당신은 25세인데... 학생 할인이 가능한가요?")
문제점: 중요한 정보를 기억하지 못해서 매번 같은 값을 반복 입력해야 합니다.
🌟 변수: 데이터를 저장하는 공간
**변수(Variable)**는 컴퓨터의 메모리에 데이터를 저장하는 공간입니다:
- 데이터를 저장하고 보관
- 필요할 때마다 꺼내서 사용
- 내용을 변경하고 업데이트 가능
변수가 있으면 프로그램이 데이터를 기억하고 재사용할 수 있습니다.
📦 PART 1: 변수의 기본 - 데이터 저장하고 사용하기
첫 번째 변수 만들기
# 변수 선언과 값 할당
name = "김파이썬"
age = 20
height = 175.5
is_student = True
print(f"이름: {name}")
print(f"나이: {age}세")
print(f"키: {height}cm")
print(f"학생인가요? {is_student}")
🔍 변수의 구조
name = "김파이썬"
# ↑ ↑ ↑
# 변수명 값 할당연산자
name
: 변수명 (데이터에 붙이는 이름표)=
: 할당 연산자 (값을 저장하는 기호)"김파이썬"
: 값 (저장될 데이터)
🎪 변수 활용 예제
# 사용자 정보 수집
print("회원가입을 위한 정보를 입력해주세요.")
name = input("이름: ")
age = int(input("나이: "))
city = input("거주 도시: ")
hobby = input("취미: ")
# 수집된 정보 활용
print("\n" + "="*40)
print("회원가입이 완료되었습니다.")
print("="*40)
print(f"환영합니다, {name}님!")
print(f"{city}에서 오신 {age}세 회원님,")
print(f"{hobby}를 좋아하시는군요!")
🏷️ PART 2: 변수명 작성 규칙
😱 나쁜 변수명 예시
# ❌ 의미를 알 수 없는 변수명
a = "김파이썬"
b = 20
c = "서울"
x = input("뭔가: ")
temp = 175.5
data = True
print(f"{a}님은 {c}에 살고 {b}세입니다.")
# 뭘 의미하는지 알 수 없음
✅ 좋은 변수명 예시
# ✅ 의미가 명확한 변수명
student_name = "김파이썬"
student_age = 20
home_city = "서울"
favorite_subject = input("좋아하는 과목: ")
height_cm = 175.5
is_enrolled = True
print(f"{student_name}님은 {home_city}에 살고 {student_age}세입니다.")
# 한눈에 무슨 의미인지 알 수 있음
📏 변수명 작성 규칙
🚫 금지 사항
# ❌ 숫자로 시작
1name = "김파이썬" # SyntaxError!
2age = 20 # SyntaxError!
# ❌ 공백 포함
student name = "김파이썬" # SyntaxError!
# ❌ 특수문자 사용
student-name = "김파이썬" # SyntaxError!
student@name = "김파이썬" # SyntaxError!
# ❌ 파이썬 예약어 사용
if = "김파이썬" # SyntaxError!
for = 20 # SyntaxError!
print = "안녕" # 기능을 망가뜨림!
✅ 올바른 변수명
# ✅ 영문자로 시작
name = "김파이썬"
student_name = "김파이썬"
# ✅ 숫자는 중간이나 끝에 사용 가능
name1 = "김파이썬"
student_name_2024 = "김파이썬"
# ✅ 언더스코어(_) 사용 가능
student_name = "김파이썬"
_private_data = "비밀"
# ✅ 대소문자 구분됨
Name = "김파이썬" # name과 다른 변수
NAME = "이파이썬" # 또 다른 변수
🎨 변수명 스타일 가이드
🐍 파이썬 스타일 (snake_case)
# ✅ 파이썬에서 권장하는 스타일
student_name = "김파이썬"
home_address = "서울시 강남구"
birth_year = 2004
is_premium_member = True
total_study_hours = 100
🐪 참고: 다른 언어 스타일들
# 자바스크립트 스타일 (camelCase) - 파이썬에서는 비추천
studentName = "김파이썬"
homeAddress = "서울시 강남구"
# 상수 스타일 (UPPER_CASE) - 변하지 않는 값에만 사용
MAX_STUDENTS = 100
PI_VALUE = 3.14159
🔄 PART 3: 변수값 변경하기
변수는 변경 가능합니다
# 게임 캐릭터 정보
player_name = "용사"
player_level = 1
player_hp = 100
player_gold = 50
print(f"🎮 {player_name} (Lv.{player_level})")
print(f"❤️ HP: {player_hp}")
print(f"💰 Gold: {player_gold}")
print("\n🗡️ 몬스터와 전투!")
player_hp = player_hp - 20 # 데미지 받음
player_gold = player_gold + 30 # 보상 획득
print(f"❤️ HP: {player_hp}")
print(f"💰 Gold: {player_gold}")
print("\n⬆️ 레벨업!")
player_level = player_level + 1
player_hp = 100 # 완전 회복
print(f"🎮 {player_name} (Lv.{player_level})")
print(f"❤️ HP: {player_hp}")
print(f"💰 Gold: {player_gold}")
🧮 변수를 활용한 계산
# 쇼핑몰 장바구니 계산
print("🛍️ 파이썬 쇼핑몰")
print("="*30)
# 상품 정보
book_price = 15000
notebook_price = 3000
pen_price = 1500
# 주문 수량
book_count = int(input("📚 책 몇 권: "))
notebook_count = int(input("📒 노트 몇 개: "))
pen_count = int(input("✏️ 펜 몇 자루: "))
# 계산
book_total = book_price * book_count
notebook_total = notebook_price * notebook_count
pen_total = pen_price * pen_count
grand_total = book_total + notebook_total + pen_total
# 영수증 출력
print("\n" + "="*30)
print("📋 영수증")
print("="*30)
print(f"📚 책: {book_count}권 × {book_price:,}원 = {book_total:,}원")
print(f"📒 노트: {notebook_count}개 × {notebook_price:,}원 = {notebook_total:,}원")
print(f"✏️ 펜: {pen_count}자루 × {pen_price:,}원 = {pen_total:,}원")
print("="*30)
print(f"💰 총 금액: {grand_total:,}원")
print("="*30)
print("구매해주셔서 감사합니다!")
🔢 변수 업데이트 단축 표현
# 일반적인 방법
score = 100
score = score + 50 # 150
# 단축 표현
score = 100
score += 50 # 150 (같은 결과)
# 다양한 단축 표현들
money = 1000
money += 500 # money = money + 500
money -= 200 # money = money - 200
money *= 2 # money = money * 2
money //= 3 # money = money // 3
print(f"최종 금액: {money}")
🚨 초보자가 자주 하는 변수 실수와 해결법
실수 1: 변수를 정의하기 전에 사용
# ❌ 틀린 예
print(student_name) # NameError: name 'student_name' is not defined
student_name = "김파이썬"
# ✅ 올바른 예
student_name = "김파이썬" # 먼저 변수 정의
print(student_name) # 그 다음 사용
기억하세요: 변수는 반드시 정의 → 사용 순서를 지켜야 합니다!
실수 2: 변수명 오타
# ❌ 틀린 예
student_name = "김파이썬"
print(student_nam) # NameError! 'm'이 빠짐
# ✅ 올바른 예
student_name = "김파이썬"
print(student_name) # 정확한 이름 사용
팁: 변수명을 복사+붙여넣기 하거나, 에디터의 자동완성 기능을 활용하세요!
실수 3: 대소문자 혼동
# ❌ 틀린 예
name = "김파이썬"
print(Name) # NameError! 'N'이 대문자
# ✅ 올바른 예
name = "김파이썬"
print(name) # 정확한 대소문자
기억하세요: 파이썬은 대소문자를 구분합니다. name
과 Name
은 다른 변수예요!
실수 4: 할당연산자(=)와 비교연산자(==) 혼동
# ❌ 틀린 예
age == 20 # 비교만 하고 저장하지 않음
# ✅ 올바른 예
age = 20 # 값을 변수에 저장
구분하기:
=
: 값을 저장할 때 (할당)==
: 값을 비교할 때 (나중에 배울 예정)
실수 5: 숫자와 문자열 혼동
# ❌ 틀린 예
age = "20" # 문자열로 저장
next_age = age + 1 # TypeError: can't add int to string
# ✅ 올바른 예
age = 20 # 숫자로 저장
next_age = age + 1 # 정상 작동 (21)
# 또는 문자열을 숫자로 변환
age = "20"
next_age = int(age) + 1 # 문자열을 정수로 변환
실수 6: 예약어를 변수명으로 사용
# ❌ 틀린 예
if = "조건" # SyntaxError! 'if'는 파이썬 예약어
for = 20 # SyntaxError! 'for'도 예약어
print = "안녕" # 동작하지만 print 기능을 망가뜨림!
# ✅ 올바른 예
condition = "조건" # 의미있는 영어 단어 사용
count = 20 # 또는 관련된 단어 사용
message = "안녕" # print 대신 message 사용
파이썬 주요 예약어들: if
, else
, for
, while
, def
, class
, True
, False
, None
등
실수 7: 변수명에 공백이나 특수문자 사용
# ❌ 틀린 예
student name = "김파이썬" # SyntaxError! 공백 불가
student-name = "김파이썬" # SyntaxError! 하이픈 불가
student@name = "김파이썬" # SyntaxError! @ 불가
# ✅ 올바른 예
student_name = "김파이썬" # 언더스코어 사용
studentName = "김파이썬" # 카멜케이스 (파이썬에서는 비추천)
student1 = "김파이썬" # 숫자는 끝에만 가능
💡 변수 실수 방지 팁
-
의미있는 이름 사용하기
# ❌ 나쁜 예 a = "김파이썬" b = 20 # ✅ 좋은 예 student_name = "김파이썬" student_age = 20
-
일관된 명명 규칙 사용하기
# ✅ snake_case로 통일 user_name = "홍길동" user_age = 25 user_email = "hong@email.com"
-
에디터의 도움 활용하기
- 자동완성 기능 사용
- 오타 체크 기능 활용
- 문법 강조 기능으로 오류 확인
🎮 퀴즈: 변수 이해도 확인
Q1. 다음 중 올바른 변수명은?
2name
student-name
student_name
if
💡 정답 확인
정답: 3번 (student_name)
1번: 숫자로 시작 불가
2번: 하이픈(-) 사용 불가
4번: 파이썬 예약어 사용 불가
Q2. 다음 코드의 결과는?
x = 10
x = x + 5
print(x)
- 10
- 15
- 10 + 5
- 오류 발생
💡 정답 확인
정답: 2번 (15)
x = x + 5
는 기존 x값(10)에 5를 더해서 새로운 값(15)을 x에 저장합니다.
Q3. 변수의 가장 중요한 역할은?
- 계산을 빠르게 하기
- 코드를 예쁘게 만들기
- 데이터를 기억하고 재사용하기
- 오류를 방지하기
💡 정답 확인
정답: 3번 (데이터를 기억하고 재사용하기)
변수의 핵심은 메모리에 값을 저장하여 나중에 다시 사용할 수 있게 하는 것입니다.
✅ 변수 마스터 체크리스트
✅ 변수 마스터 체크리스트
🌟 학습 완료
변수를 배움으로써 프로그램이 데이터를 기억하고 활용할 수 있게 되었습니다. 이제 더 복잡하고 실용적인 프로그램을 만들 수 있는 기반을 마련했습니다.
📝 핵심 포인트
- 변수는 데이터를 저장하는 메모리 공간입니다
- 의미있는 변수명을 사용하여 코드의 가독성을 높이세요
- 변수의 값은 언제든지 변경할 수 있습니다
- 프로젝트 실습을 통해 변수 활용 능력을 기르세요
다음 단원에서는 연산자를 활용하여 변수를 더 효과적으로 조작하는 방법을 배워보겠습니다!
Last updated on