1장: 데이터 타입과 변수 — Python과 첫 대화¶
Python 실행 방법¶
Python을 실행하는 방법은 두 가지입니다.
CLI (대화형) 모드¶
터미널에서 python 또는 py를 입력하면 >>> 프롬프트가 뜹니다.
>>> print("Hello, World!")
Hello, World!
>>> 2 + 3
5
REPL(Read-Evaluate-Print Loop): 입력 → 계산 → 출력을 반복합니다. 즉시 결과를 확인할 수 있지만 종료하면 사라집니다.
스크립트 모드¶
.py 파일을 만들어서 실행합니다.
hello.py → python hello.py
파일로 저장되므로 재사용·배포·자동화에 적합합니다.
| 모드 | 특징 | 용도 |
|---|---|---|
| CLI (대화형) | 즉시 실행, 종료하면 사라짐 | 빠른 테스트 |
| 스크립트 | 파일로 저장, 반복 실행 가능 | 실제 프로그래밍 |
데이터 타입이란?¶
컴퓨터는 모든 것을 0과 1로 저장합니다.
01000001 = (int) 65 또는 (str) 'A'
같은 비트라도 어떤 타입인지에 따라 의미가 달라집니다.
데이터 타입은 Python에게 두 가지를 알려줍니다: 1. 어떤 종류의 값인가 (숫자인지, 문자인지…) 2. 어떤 연산이 가능한가 (더할 수 있는지, 이어 붙일 수 있는지…)
Python의 주요 데이터 타입¶
str 문자열 "hello", "abc"
int 정수 42, -7, 0
float 실수 3.14, -0.5
bool 참/거짓 True, False
list 리스트 [1, 2, 3]
tuple 튜플 (1, 2, 3)
dict 딕셔너리 {"key": "value"}
C vs Python — 동적 타이핑¶
// C: 타입을 직접 선언해야 함
int A = 42;
# Python: 그냥 값을 넣으면 됨 (동적 타이핑)
A = 42
Python은 값을 보고 자동으로 타입을 결정합니다.
타입 확인: type()¶
print(type(-3)) # <class 'int'>
print(type(3.0)) # <class 'float'>
print(type("314")) # <class 'str'>
print(type(4 / 2)) # <class 'float'> ← 주의!
| 값 | 타입 |
|---|---|
-3 |
int |
3.0 |
float |
3.14 |
float |
"314" |
str |
"" |
str |
4/2 |
float |
str vs int 연산¶
# int: 산술 연산
print(10 + 3) # 13
print(10 * 3) # 30
# str: 이어 붙이기, 반복
print("10" + "3") # 103 ← 숫자가 아니라 문자 연결!
print("10" * 3) # 101010
변수 (Variable)¶
변수란?¶
변수는 값에 이름을 붙이는 것입니다.
A = 3
A: 변수 이름 (variable name)=: 대입 연산자 (assignment operator)3: 값 (value) — 메모리 어딘가에 저장됨
A = 3
print(A) # 3
A = 99 # 재대입 (rebinding)
print(A) # 99
메모리 주소 확인: id()¶
A = 3
print(id(A)) # 예: 140234567890
print(hex(id(A))) # 예: 0x7f8b2c3d4e50 (16진수로 표시)
id()는 값이 저장된 메모리 주소를 돌려줍니다.
변수 이름 규칙¶
가능한 것:
| 이름 | 설명 |
|---|---|
_a |
언더스코어로 시작 |
abcd |
소문자 |
a3 |
문자 + 숫자 |
none |
소문자는 키워드 아님 |
_1_ |
언더스코어와 숫자 조합 |
불가능한 것:
| 이름 | 이유 |
|---|---|
ab cd |
공백 불가 |
3a |
숫자로 시작 불가 |
None |
파이썬 예약어 |
True |
파이썬 예약어 |
if, for |
파이썬 예약어 |
a3.14 |
특수문자 불가 |
규칙 요약:
- 알파벳 또는 _로 시작
- 대소문자 구분 (age ≠ Age)
- 공백, 특수문자, 파이썬 예약어 사용 불가
주요 내장 함수¶
print() — 출력¶
print("Hello, World!") # Hello, World!
name = "지민"
print(name) # 지민
print("이름:", name) # 이름: 지민
함수 개념으로 보면:
f(x) = 2x
print("Hello") → 입력: "Hello" → 출력: 화면에 Hello
input() — 입력 받기¶
name = input("이름을 입력하세요: ")
print("안녕하세요,", name)
이름을 입력하세요: 지민
안녕하세요, 지민
input()은 항상 문자열(str)로 돌려줍니다.
age = input("나이: ")
print(type(age)) # <class 'str'>
# 숫자로 쓰려면 형 변환 필요
age = int(input("나이: "))
print(age + 1)
type() — 타입 확인¶
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hello")) # <class 'str'>
print(type(True)) # <class 'bool'>
id() — 메모리 주소¶
x = 10
print(id(x)) # 정수 (메모리 주소)
print(hex(id(x))) # 16진수로 표시
실습 미션¶
미션 1: 나를 소개하는 프로그램¶
이름, 나이, 좋아하는 과목을 input()으로 입력받아 출력하는 프로그램을 만드세요.
이름을 입력하세요: 지민
나이를 입력하세요: 17
좋아하는 과목: 수학
---
안녕하세요! 저는 지민입니다.
나이: 17살
좋아하는 과목: 수학
미션 2: 타입 탐정¶
아래 각 값의 타입을 type()으로 확인하고, 예상과 실제를 비교해보세요.
values = [-3, 3.0, 3.14, 314, "314", "", "int64", 4/2, True]
for v in values:
print(v, "→", type(v))
미션 3: 원의 넓이¶
반지름을 입력받아 원의 넓이를 계산하세요.
넓이 = π × r² (π = 3.14)
r = float(input("반지름: "))
# 여기에 코드 작성
# 반지름: 5
# 원의 넓이: 78.5
미션 4: 변수 스왑¶
변수 a와 b의 값을 서로 바꾸세요. (임시 변수를 사용하거나 Python의 튜플 방식을 써보세요)
a = 10
b = 20
# 여기에 코드 작성
print(a) # 20
print(b) # 10
핵심 요약¶
| 개념 | 설명 |
|---|---|
| CLI 모드 | >>> 프롬프트, 대화형 실행 |
| 스크립트 모드 | .py 파일로 저장·실행 |
| 데이터 타입 | 값의 종류 (int, float, str, bool…) |
| 동적 타이핑 | Python이 타입을 자동으로 결정 |
| 변수 | 값에 이름을 붙여 메모리에 저장 |
print() |
화면에 출력 |
input() |
사용자 입력을 str로 받음 |
type() |
데이터 타입 확인 |
id() |
메모리 주소 확인 |