02. 변수와 출력

🎯 이 장의 목표
  • 변수가 "값에 붙인 이름표"라는 개념을 잡는다.
  • 변수를 만들고(할당), 값을 바꾸고, 출력하는 법을 익힌다.
  • print()로 여러 값을 한 번에, 원하는 형태로 출력한다.
  • 좋은 변수 이름을 짓는 규칙과 관습을 안다.

변수: 값에 붙이는 이름표

서랍이 잔뜩 있는 수납장을 상상해 봅시다. 각 서랍에 물건을 넣고 "양말", "영수증" 같은 이름표를 붙이면, 나중에 "양말 서랍 줘"라고 말해 꺼낼 수 있습니다.

변수(variable)가 바로 이 이름표입니다. 어떤 값을 저장해 두고 이름으로 꺼내 쓰는 것이죠.

PYTHON
name = "민지"
age = 25
print(name)   # 민지
print(age)    # 25

여기서 =는 "같다"가 아니라 "오른쪽 값을 왼쪽 이름에 넣어라"라는 뜻입니다. 이 동작을 할당(assignment)이라고 합니다.

⚠️ 흔한 실수
흔한 함정: =는 수학의 "같음"이 아닙니다. 수학의 같음(비교)은 ==(등호 두 개)이며, 이건 5장에서 배웁니다. x = 5는 "x는 5와 같다"가 아니라 "x에 5를 넣어라"입니다.

그림으로 보면 이렇습니다.

flowchart LR
    V1["age<br/>(이름표)"]:::var -->|가리킴| Val1["25<br/>(값)"]:::data
    V2["name<br/>(이름표)"]:::var -->|가리킴| Val2["'민지'<br/>(값)"]:::data

    classDef var fill:#fff3b0,stroke:#e0a800,color:#5c4500
    classDef data fill:#a8dadc,stroke:#457b9d,color:#1d3557

변수의 값은 바뀔 수 있다

이름이 "변수(變數, 변하는 수)"인 이유가 있습니다. 같은 이름에 새 값을 다시 할당하면 이름표가 새 값을 가리키게 됩니다.

PYTHON
score = 10
print(score)   # 10

score = 20     # 같은 이름에 새 값을 다시 할당
print(score)   # 20

score = score + 5   # 현재 값(20)에 5를 더해 다시 넣음
print(score)   # 25

score = score + 5가 처음엔 이상해 보일 수 있습니다. =를 "같다"로 읽으면 말이 안 되니까요. 하지만 "오른쪽을 먼저 계산한 뒤 왼쪽에 넣어라"로 읽으면 자연스럽습니다. 오른쪽 score + 520 + 5 = 25이고, 그 결과를 다시 score에 넣습니다.

이런 "자기 자신을 갱신하는" 패턴은 매우 흔해서 줄임 표현이 있습니다.

PYTHON
count = 0
count += 1     # count = count + 1 과 같음
count += 10    # count = count + 10 과 같음
print(count)   # 11
줄임 표현원래 의미
x += 3x = x + 3
x -= 3x = x - 3
x *= 3x = x * 3
x /= 3x = x / 3

print()로 출력하기

print()는 괄호 안의 값을 화면에 출력합니다. 값을 여러 개 넣으면 빈칸으로 구분해 한 줄에 출력합니다.

PYTHON
name = "민지"
age = 25
print(name, age)              # 민지 25
print("이름:", name, "/ 나이:", age)
# 출력: 이름: 민지 / 나이: 25

쉼표로 구분된 값들 사이에 자동으로 한 칸 띄어쓰기가 들어가는 점에 주목하세요.

sepend 옵션

구분자와 줄 끝 문자를 바꿀 수도 있습니다.

PYTHON
print("2025", "01", "15", sep="-")     # 2025-01-15
print("로딩중", end="")                  # 줄바꿈 없이...
print("...완료!")                        # 같은 줄에 이어 붙음
# 출력:
# 2025-01-15
# 로딩중...완료!
  • sep(separator): 값들 사이에 넣을 구분 문자. 기본값은 띄어쓰기 한 칸.
  • end: 출력 끝에 붙일 문자. 기본값은 줄바꿈(\n). 그래서 보통 print()마다 줄이 바뀝니다.
💡 팁
sepend는 지금 당장 외울 필요는 없습니다. "이런 옵션이 있더라" 정도만 기억해 두고, 필요할 때 다시 찾아보면 됩니다.

좋은 변수 이름 짓기

변수 이름에는 규칙(반드시 지켜야 함)과 관습(다 같이 지키기로 한 약속)이 있습니다.

반드시 지켜야 하는 규칙

규칙
영문자·숫자·밑줄(_)만 사용user_name, score2
숫자로 시작 불가2nd ❌ → second
공백·특수문자 불가user name, total$
예약어(키워드) 사용 불가if, for, class 등은 변수명으로 못 씀
⚠️ 흔한 실수
한글 변수명도 문법적으로는 가능하지만(이름 = "민지"), 실무에서는 영문 변수명이 표준입니다. 이 책도 영문을 권장합니다.

관습 (PEP 8 스타일)

Python 커뮤니티는 변수 이름을 소문자 + 밑줄로 잇는 방식(snake_case)을 표준으로 씁니다.

PYTHON
# ✅ 좋은 예 (snake_case + 의미가 분명한 이름)
user_age = 25
total_price = 15000
is_logged_in = True

# ❌ 나쁜 예
a = 25            # 무엇의 25인지 알 수 없음
totalPrice = 15000  # 카멜케이스는 Python 관습이 아님
x1 = True         # 의미 없는 이름
💡 팁
위에서 나온 카멜케이스(camelCase)totalPrice처럼 단어의 첫 글자를 대문자로 올려 이어 붙이는 표기법입니다(낙타 등의 혹처럼 중간이 솟아 붙은 이름). Java·JavaScript 등에서는 흔하지만, Python 변수·함수 이름의 관습은 total_price 같은 snake_case입니다.
📌 핵심
핵심: 좋은 변수 이름은 주석을 줄여준다. d = 30보다 days_left = 30이 훨씬 명확하다. 1~2글자 더 치는 수고가 미래의 디버깅 시간을 아껴준다.

PEP 8은 Python의 공식 코드 스타일 가이드입니다. PEP는 Python Enhancement Proposal(파이썬 개선 제안)의 약자로, Python을 어떻게 발전시킬지 정리한 공식 문서 묶음이고, 그중 8번 문서가 "코드를 이렇게 쓰자"는 스타일 약속입니다. 지금은 "snake_case를 쓰는구나" 정도만 기억하면 충분합니다. (자세한 내용은 중급편에서 다룹니다.)

이 장에서 배운 것

  • 변수는 값에 붙인 이름표이고, =는 "오른쪽 값을 왼쪽 이름에 넣어라"라는 할당이다.
  • 같은 이름에 다시 할당하면 값이 바뀐다. x += 1 같은 복합 할당 연산자로 갱신을 짧게 쓴다.
  • print()는 쉼표로 구분한 여러 값을 띄어쓰기로 이어 출력하며, sep·end 옵션으로 형태를 바꿀 수 있다.
  • 변수 이름은 영문자·숫자·밑줄만, 숫자로 시작 불가. 관습적으로 의미가 분명한 snake_case를 쓴다.

🧪 실습 문제

문제 1. 다음 코드의 출력은 무엇일까요?

PYTHON
x = 100
x = x - 30
x -= 20
print(x)

문제 2. widthheight 두 변수에 각각 8, 5를 넣고, 넓이(가로 × 세로)를 출력하는 코드를 쓰세요. 출력은 넓이: 40 형태가 되도록 하세요.

문제 3. 다음 변수 이름 중 사용할 수 없는 것을 모두 고르세요.

TEXT
total_count   2nd_place   user-name   _temp   class   score3

문제 4. print()sep 옵션을 사용해 2025/12/31을 출력하세요. (세 값 "2025", "12", "31"을 사용)

<details>

<summary>✅ 정답·해설 보기</summary>

1. 50. 100 - 30 = 70, 다시 70 - 20 = 50.

2.

PYTHON
width = 8
height = 5
print("넓이:", width * height)   # 넓이: 40

3. 사용할 수 없는 것: 2nd_place(숫자로 시작), user-name(하이픈 불가, 빼기로 해석됨), class(예약어).

사용 가능한 것: total_count, _temp, score3.

4.

PYTHON
print("2025", "12", "31", sep="/")   # 2025/12/31

</details>

◀️ 이전 장: 01. Python 첫걸음 | ▶️ 다음 장: 03. 숫자와 연산자