숫자 계산만으로는 실용적인 프로그램을 만들기 어렵습니다. 계산 결과를 저장하고, 사용자로부터 값을 입력받을 수 있어야 진짜 프로그램이 되죠. 이번 포스트에서는 파이썬의 변수(Variable)와 입력(Input)에 대해 알아보겠습니다.
변수(Variable)는 값을 저장하는 공간입니다. 수학에서 x = 10처럼 변수를 사용하듯, 프로그래밍에서도 데이터를 변수에 저장하여 사용합니다.
파이썬에서 변수를 만드는 방법은 간단합니다.
변수이름 = 값
예시:
x = 10
name = 'Python'
pi = 3.14
이를 "변수 이름에 값을 할당(assign)한다"고 표현합니다.
프로그래밍에서 =는 수학의 "같다"가 아니라 "할당하다"는 의미입니다.
x = 10 # x에 10을 할당 (저장)
만약 "같다"를 비교하고 싶다면 == 연산자를 사용합니다.
x = 10
print(x == 10) # True (x가 10과 같은지 비교)
print(x == 5) # False
| 연산자 | 의미 | 예시 |
|---|---|---|
= | 할당 (값을 저장) | x = 10 |
== | 비교 (같은지 확인) | x == 10 → True |
변수 이름을 지을 때는 다음 규칙을 반드시 따라야 합니다.
영문 문자, 숫자, 밑줄(_)만 사용 가능
name = 'Python' # ✅
user_age = 25 # ✅
value1 = 100 # ✅
user-name = 'Kim' # ❌ 하이픈 불가
2nd_value = 50 # ❌ 숫자로 시작 불가
숫자로 시작할 수 없음
age1 = 20 # ✅
1age = 20 # ❌ SyntaxError
파이썬 예약어는 사용 불가
if = 10 # ❌ 'if'는 예약어
for = 20 # ❌ 'for'는 예약어
class = 30 # ❌ 'class'는 예약어
주요 예약어: if, for, while, def, class, return, True, False, None 등
대소문자를 구분함
name = 'Alice'
Name = 'Bob'
NAME = 'Charlie'
# 위 세 변수는 모두 다른 변수입니다
의미 있는 이름 사용
# 나쁜 예
a = 25
x = 'Kim'
# 좋은 예
user_age = 25
user_name = 'Kim'
스네이크 케이스(snake_case) 사용
# 파이썬 권장 스타일 (PEP 8)
user_name = 'Python'
total_price = 15000
max_value = 100
상수는 대문자 사용
PI = 3.14159
MAX_SIZE = 100
DEFAULT_COLOR = 'blue'
파이썬은 여러 변수를 한 줄에 동시에 만들 수 있습니다.
x = y = z = 10
print(x, y, z) # 10 10 10
x, y, z = 10, 20, 30
print(x) # 10
print(y) # 20
print(z) # 30
이를 언패킹(unpacking)이라고 합니다.
다른 언어에서는 임시 변수가 필요하지만, 파이썬은 매우 간단합니다.
# 다른 언어의 일반적인 방법
a = 10
b = 20
# 임시 변수 필요
temp = a
a = b
b = temp
print(a, b) # 20 10
# 파이썬의 간편한 방법
a = 10
b = 20
a, b = b, a # 값 교환
print(a, b) # 20 10
변수는 값을 저장하고 있으므로, 변수끼리 계산할 수 있습니다.
x = 10
y = 20
result = x + y
print(result) # 30
# 다양한 연산
print(x * y) # 200
print(y - x) # 10
print(y / x) # 2.0
del 키워드로 변수를 삭제할 수 있습니다.
x = 10
print(x) # 10
del x
print(x) # NameError: name 'x' is not defined
변수를 삭제하면 메모리에서 해제되며, 이후 접근하면 에러가 발생합니다.
변수의 값을 업데이트할 때 산술 연산 후 할당하는 작업을 간결하게 처리할 수 있습니다.
# 일반적인 방법
x = 10
x = x + 5
print(x) # 15
# 복합 대입 연산자 사용
x = 10
x += 5 # x = x + 5와 동일
print(x) # 15
x = 10
x += 5 # x = x + 5
print(x) # 15
x -= 3 # x = x - 3
print(x) # 12
x *= 2 # x = x * 2
print(x) # 24
x /= 4 # x = x / 4
print(x) # 6.0
x //= 2 # x = x // 2
print(x) # 3.0
x %= 2 # x = x % 2
print(x) # 1.0
x = 2
x **= 3 # x = x ** 3
print(x) # 8
| 연산자 | 의미 | 예시 |
|---|---|---|
+= | 더한 후 할당 | x += 5 |
-= | 뺀 후 할당 | x -= 3 |
*= | 곱한 후 할당 | x *= 2 |
/= | 나눈 후 할당 | x /= 4 |
//= | 정수 나눈 후 할당 | x //= 2 |
%= | 나머지 할당 | x %= 2 |
**= | 거듭제곱 후 할당 | x **= 3 |
input() 함수는 사용자가 입력한 값을 가져오는 함수입니다.
input()
코드를 실행하면 프로그램이 일시 정지되고, 사용자의 입력을 기다립니다. 사용자가 무언가 입력하고 엔터를 누르면 그 값을 반환합니다.
x = input()
print(x)
실행 결과:
(여기서 사용자가 'Hello' 입력)
Hello
괄호 안에 문자열을 작성하면 프롬프트(prompt) 메시지를 표시할 수 있습니다.
name = input('이름을 입력하세요: ')
print('안녕하세요,', name, '님!')
실행 결과:
이름을 입력하세요: 홍길동
안녕하세요, 홍길동 님!
프롬프트를 사용하면 사용자가 무엇을 입력해야 하는지 알 수 있어 가독성이 높아집니다.
중요: input() 함수는 항상 문자열(str) 타입을 반환합니다.
x = input('숫자를 입력하세요: ')
print(type(x)) # <class 'str'>
숫자를 입력해도 문자열로 저장됩니다!
x = input('첫 번째 숫자: ') # 10 입력
y = input('두 번째 숫자: ') # 20 입력
result = x + y
print(result) # 1020 (문자열 연결!)
예상: 30
실제: 1020 (문자열 '10' + '20' = '1020')
숫자로 계산하려면 int() 함수로 문자열을 정수로 변환해야 합니다.
x = int(input('첫 번째 숫자: ')) # 10 입력
y = int(input('두 번째 숫자: ')) # 20 입력
result = x + y
print(result) # 30 (정상적인 덧셈)
# 문자열 → 정수
x = int('10')
print(x, type(x)) # 10 <class 'int'>
# 문자열 → 실수
y = float('3.14')
print(y, type(y)) # 3.14 <class 'float'>
# 정수 → 문자열
z = str(100)
print(z, type(z)) # 100 <class 'str'>
# 사용자로부터 두 정수를 입력받아 합을 출력하는 프로그램
num1 = int(input('첫 번째 정수를 입력하세요: '))
num2 = int(input('두 번째 정수를 입력하세요: '))
total = num1 + num2
print('두 수의 합:', total)
실행 결과:
첫 번째 정수를 입력하세요: 15
두 번째 정수를 입력하세요: 27
두 수의 합: 42
split() 메서드를 사용하면 공백으로 구분된 값을 한 번에 입력받을 수 있습니다.
# 한 줄에 두 숫자 입력
a, b = input('두 숫자를 띄어쓰기로 입력: ').split()
a = int(a)
b = int(b)
print(a + b)
더 간결한 방법:
a, b = map(int, input('두 숫자를 띄어쓰기로 입력: ').split())
print(a + b)
실행 결과:
두 숫자를 띄어쓰기로 입력: 10 20
30