← 파이썬 강의 목록으로
🌱
기초 (Basic)
변수 · int/float/str/bool · 형 변환 · type() · 산술/비교/논리 · input · print · f-string

2~3주차 — 변수와 자료형 · 연산자와 입출력

변수에 값을 담고, int·float·str·bool 4가지 기본 자료형을 다루고, type() 으로 타입을 확인하고, int()/float()/str() 로 형 변환합니다. None 의 의미도 익힙니다. 산술·비교·논리 연산자, input() 으로 사용자 입력 받기, print() 와 f-string 으로 보기 좋게 출력하기, 그리고 입력받은 문자열을 숫자로 변환해 계산하는 패턴을 익힙니다.

변수자료형형 변환type연산자inputprintf-string
소요 시간
⏱ 2시간 + 2시간
난이도
📊 완전 초보
선수 조건
🎯 1주차
결과물
type()으로 타입 확인 + int(input()) 같은 변환을 자유롭게 사용 / 사용자 입력을 받아 계산하고 깔끔히 포매팅해 출력

이 강의에서 배우는 것

  • 1변수의 개념과 할당 문법을 이해한다
  • 24가지 기본 자료형(int, float, str, bool)을 구분한다
  • 3type() 으로 변수의 타입을 확인한다
  • 4int(), float(), str() 으로 형 변환한다
  • 5None 의 의미를 안다
  • 6산술·비교·논리 연산자를 사용한다
  • 7input() 으로 사용자 입력을 받는다
  • 8print() 와 f-string으로 보기 좋게 출력한다
  • 9입력받은 문자열을 숫자로 변환해 계산한다

2주차 — 변수와 자료형

변수에 값을 담고, int·float·str·bool 4가지 기본 자료형을 다루고, type() 으로 타입을 확인하고, int()/float()/str() 로 형 변환합니다. None 의 의미도 익힙니다.

1. 변수란

변수는 값에 이름을 붙인 것입니다. 메모리의 어떤 공간에 데이터를 저장하고, 그 공간을 이름으로 불러옵니다.

python
age = 20         # age 라는 변수에 20을 담음
name = "홍길동"  # name 에 문자열을 담음
print(age)       # 20 출력

= 은 수학의 "같다"가 아니라 할당(assign) 입니다. 오른쪽 값을 왼쪽 변수에 넣는다는 뜻.

변수 명명 규칙

  • 영문, 숫자, _ 만 사용. 첫 글자는 숫자 불가
  • 대소문자 구분 (age ≠ Age)
  • if, for 같은 예약어는 못 씀
  • 관례: snake_case (user_name, total_score)

2. 기본 자료형

타입예시설명
int10, -3, 0정수
float3.14, -0.5실수 (소수)
str"hello", '안녕'문자열 (작은/큰따옴표 둘 다)
boolTrue, False참/거짓 (대문자 시작!)
NoneTypeNone"값이 없음"을 나타냄

3. 형 변환 (Type Casting)

타입을 강제로 바꿉니다. 입력 받은 값은 항상 문자열이라 숫자로 바꿔야 계산할 수 있습니다.

python
num_str = "123"
num_int = int(num_str)
print(num_int + 7)   # 130
함수설명
int(x)x를 정수로 변환
float(x)x를 실수로 변환
str(x)x를 문자열로 변환
bool(x)x를 불리언으로 변환

불가능한 변환은 ValueError:

python
int("abc")     # ValueError: invalid literal for int() with base 10: 'abc'

4. type() 함수

python
print(type(10))            # <class 'int'>
print(type(3.14))          # <class 'float'>
print(type("hi"))          # <class 'str'>
print(type(True))          # <class 'bool'>
print(type(None))          # <class 'NoneType'>

5. 자주 하는 실수

1) 변수 이름을 숫자로 시작

python
2nd_player = "Bob"  # SyntaxError

→ second_player 또는 player2 로.

2) True/False 를 소문자로

python
is_ok = true   # NameError

→ 첫 글자 대문자: True, False, None.

3) 문자열에 따옴표 빠짐

python
name = 홍길동   # NameError: name '홍길동' is not defined

4) 정수/문자열 혼합 더하기

python
age = 20
print("나이: " + age)   # TypeError

→ print("나이: " + str(age)) 또는 f-string f"나이: {age}".

5) input() 결과를 그대로 계산

python
n = input("숫자: ")   # 항상 문자열!
print(n + 1)          # TypeError

→ n = int(input("숫자: "))

6. FAQ

Q1. ' 와 " 는 차이가 있나요?

기능적으로 동일합니다. 다만 문자열 안에 따옴표를 넣고 싶을 때 다른 종류를 사용하면 편합니다 ("It's me").

Q2. 변수에는 어떤 타입이든 다시 할당할 수 있나요?

네. 파이썬은 동적 타입이라 x = 10 한 뒤 x = "hello" 해도 됩니다. 다만 가독성 때문에 권장하지 않습니다.

Q3. 0 과 False 는 같은가요?

비교(==)하면 True지만 타입은 다릅니다. int vs bool.

Q4. 숫자에 콤마를 넣어도 되나요?

안 됩니다. 콤마 대신 언더스코어 사용 가능: 1_000_000 (가독성용).

3주차 — 연산자와 입출력

산술·비교·논리 연산자, input() 으로 사용자 입력 받기, print() 와 f-string 으로 보기 좋게 출력하기, 그리고 입력받은 문자열을 숫자로 변환해 계산하는 패턴을 익힙니다.

1. 산술 연산자

연산자의미예시결과
+더하기5 + 38
-빼기5 - 32
*곱하기5 * 315
/나누기 (실수)7 / 23.5
//나누기 (몫)7 // 23
%나머지7 % 21
**거듭제곱2 ** 101024

2. 비교 연산자와 논리 연산자

python
print(5 > 3)            # True
print(5 == 5)           # True (같다)
print(5 != 3)           # True (다르다)

print(True and False)   # False
print(True or False)    # True
print(not True)         # False

3. 대입 연산자

python
x = 10
x += 5    # x = x + 5  →  15
x -= 3    # 12
x *= 2    # 24
x //= 5   # 4

4. input() 으로 입력 받기

python
name = input("이름을 입력하세요: ")
print("환영합니다,", name)
⚠️

input() 은 항상 문자열을 반환합니다. 숫자를 받으려면 형 변환:

python
age = int(input("나이: "))

5. f-string 으로 포맷팅

python
name = "홍길동"
score = 95
print(f"{name}님의 점수는 {score}점입니다")

# 자릿수 / 소수점 / 정렬
price = 12345
print(f"가격: {price:,}원")        # 가격: 12,345원
print(f"원주율: {3.141592:.2f}")    # 원주율: 3.14
print(f"{name:>10}")                # 우측 정렬 폭 10

6. 자주 하는 실수

1) input() 결과를 그대로 계산

python
a = input("수: ")   # 문자열
print(a + 10)       # TypeError

→ a = int(input("수: "))

2) / 와 // 혼동

/ 는 항상 실수, // 는 몫(정수). 5/2 = 2.5, 5//2 = 2.

3) f-string 앞에 f 빠뜨림

python
print("{name}님")   # 그냥 "{name}님" 출력
print(f"{name}님")  # 변수 치환됨

4) == 대신 = 사용

= 은 할당, == 은 비교. 조건문에서 자주 헷갈림.

7. FAQ

Q1. print() 끝에 줄바꿈이 자동인데 안 되게 하려면?

print("hi", end="") 로 줄바꿈 제거. end="-" 처럼 다른 문자도 가능.

Q2. 여러 변수를 한 번에 출력하려면?

print(a, b, c) 처럼 콤마로 구분하면 공백으로 연결. sep="-" 로 구분자 변경 가능.

Q3. 입력을 한 줄에 여러 개 받으려면?

a, b = input("두 수: ").split() — 공백으로 분리. 여전히 문자열이므로 형 변환 필요.

💻 예제 (examples)

실제로 실행해 결과를 확인할 수 있는 예제 코드입니다.

01_variables.py— 변수 선언과 사용
CODE
name = "홍길동"
age = 20
height = 175.5
is_student = True

print(name, age, height, is_student)

age = 21  # 변수는 다시 할당 가능
print("내년 나이:", age)
▶ 실행 결과
홍길동 20 175.5 True
내년 나이: 21
02_types.py— type() 으로 타입 확인
CODE
print(type(10))         # <class 'int'>
print(type(3.14))       # <class 'float'>
print(type("hello"))    # <class 'str'>
print(type(True))       # <class 'bool'>
print(type(None))       # <class 'NoneType'>
▶ 실행 결과
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'NoneType'>
03_casting.py— 정상 형 변환
CODE
num_str = "123"
num_int = int(num_str)
print(num_int + 7)             # 130

pi_str = "3.14"
pi_float = float(pi_str)
print(pi_float * 2)            # 6.28

age = 20
print("나이: " + str(age))      # 나이: 20

print(int(3.9))                 # 3 (소수점 버림)
print(bool(0), bool(1), bool("")) # False True False
▶ 실행 결과
130
6.28
나이: 20
3
False True False
04_casting_error.py— 형 변환 실패 (의도적 에러)
CODE
# 의도적으로 에러를 발생시키는 예제
# 실행하면 ValueError 메시지가 나옵니다 — 정상입니다

print("'abc'를 정수로 변환 시도...")
try:
    int("abc")
except ValueError as e:
    print("에러 발생:", e)

print("'1.5'를 정수로 직접 변환 시도...")
try:
    int("1.5")
except ValueError as e:
    print("에러 발생:", e)
    print("이 경우는 float() 후 int() 로 두 번 변환:")
    print(int(float("1.5")))   # 1
▶ 실행 결과
'abc'를 정수로 변환 시도...
에러 발생: invalid literal for int() with base 10: 'abc'
'1.5'를 정수로 직접 변환 시도...
에러 발생: invalid literal for int() with base 10: '1.5'
이 경우는 float() 후 int() 로 두 번 변환:
1
01_arithmetic.py— 산술 연산자 모음 + 우선순위
CODE
print(5 + 3)      # 8
print(7 - 2)      # 5
print(4 * 6)      # 24
print(7 / 2)      # 3.5  (실수 나눗셈)
print(7 // 2)     # 3    (몫)
print(7 % 2)      # 1    (나머지)
print(2 ** 10)    # 1024 (2의 10제곱)

# 우선순위 (수학과 동일)
print(2 + 3 * 4)        # 14
print((2 + 3) * 4)      # 20
▶ 실행 결과
8
5
24
3.5
3
1
1024
14
20
02_input.py— input() 기초
CODE
name = input("이름을 입력하세요: ")
print("환영합니다,", name)
print(f"{name}님, 반갑습니다!")
▶ 실행 결과
이름을 입력하세요: 홍길동
환영합니다, 홍길동
홍길동님, 반갑습니다!
03_fstring.py— f-string 포맷팅 — 천 단위, 소수점, 정렬
CODE
name = "홍길동"
score = 95
price = 12345

print(f"{name}님의 점수는 {score}점입니다")
print(f"가격: {price:,}원")             # 12,345원
print(f"원주율: {3.141592:.2f}")         # 3.14
print(f"이름: {name:>10}")               # 우측정렬 폭 10
print(f"이름: {name:<10}|")              # 좌측정렬
print(f"이름: {name:^10}|")              # 가운데정렬
▶ 실행 결과
홍길동님의 점수는 95점입니다
가격: 12,345원
원주율: 3.14
이름:        홍길동
이름: 홍길동       |
이름:    홍길동    |
04_calc_input.py— 입력값을 숫자로 변환해 계산
CODE
a = int(input("첫 번째 수: "))
b = int(input("두 번째 수: "))

print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} * {b} = {a * b}")
print(f"{a} / {b} = {a / b:.2f}")
▶ 실행 결과
첫 번째 수: 10
두 번째 수: 3
10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3.33

📝 과제 (exercises)

직접 풀어보고, 막힐 때 정답을 펼쳐 비교해보세요.

과제 1

만 나이 계산기

목표: 사용자에게 출생연도를 입력받아 만 나이를 출력한다.

요구사항
  • 현재 연도는 코드 안에 상수로 정의 (예: CURRENT_YEAR = 2026)
  • input() 으로 출생연도 입력
  • 입력값을 정수로 변환 후 만 나이 계산
  • 결과 출력
입출력 예시
$ python age.py
출생연도: 2005
만 나이: 21
채점
  • · 입력 받기 — 30%
  • · 형 변환 — 30%
  • · 정확한 계산과 출력 — 40%
▶정답 코드 펼치기 / 접기
SOLUTION
CURRENT_YEAR = 2026

birth_year = int(input("출생연도: "))
age = CURRENT_YEAR - birth_year
print(f"만 나이: {age}")
▶ 실행 결과
출생연도: 2005
만 나이: 21
과제 2

5개 변수 + 타입 출력

목표: 서로 다른 자료형의 변수를 5개 선언하고, 값과 타입을 함께 출력한다.

요구사항
  • 변수 5개 (각각 다른 의미를 갖는 이름)
  • 자료형은 최소 3종류 이상 포함 (int, float, str, bool 중)
  • 각 변수마다 값과 타입을 한 줄에 출력
입출력 예시
name = 홍길동 (<class 'str'>)
age = 20 (<class 'int'>)
height = 175.5 (<class 'float'>)
is_student = True (<class 'bool'>)
country = 한국 (<class 'str'>)
채점
  • · 변수 5개 이상 — 50%
  • · 3종류 이상의 자료형 — 30%
  • · 출력 형식 — 20%
▶정답 코드 펼치기 / 접기
SOLUTION
name = "홍길동"
age = 20
height = 175.5
is_student = True
country = "한국"

print(f"name = {name} ({type(name)})")
print(f"age = {age} ({type(age)})")
print(f"height = {height} ({type(height)})")
print(f"is_student = {is_student} ({type(is_student)})")
print(f"country = {country} ({type(country)})")
▶ 실행 결과
name = 홍길동 (<class 'str'>)
age = 20 (<class 'int'>)
height = 175.5 (<class 'float'>)
is_student = True (<class 'bool'>)
country = 한국 (<class 'str'>)
과제 3

4가지 자료형 모두 사용

목표: 짧은 프로그램 안에서 int, float, str, bool 을 각각 한 번 이상 사용한다.

요구사항
  • 자유 주제 (예: 내 컴퓨터 사양, 좋아하는 카페 정보, 강아지 정보)
  • 4가지 자료형이 모두 등장
  • 결과를 깔끔하게 출력
입출력 예시
$ python pet.py
[강아지 정보]
이름: 초코 (str)
나이: 3년 (int)
몸무게: 4.2kg (float)
중성화 여부: True (bool)
채점
  • · 4가지 자료형 모두 사용 — 60%
  • · 출력이 의미 있음 — 40%
▶정답 코드 펼치기 / 접기
SOLUTION
name = "초코"
age = 3
weight = 4.2
neutered = True

print("[강아지 정보]")
print(f"이름: {name} (str)")
print(f"나이: {age}년 (int)")
print(f"몸무게: {weight}kg (float)")
print(f"중성화 여부: {neutered} (bool)")
▶ 실행 결과
[강아지 정보]
이름: 초코 (str)
나이: 3년 (int)
몸무게: 4.2kg (float)
중성화 여부: True (bool)
과제 4

BMI 계산기

목표: 키와 몸무게를 입력받아 BMI 를 계산해서 출력한다.

요구사항
  • 키는 cm 단위로 입력 (예: 175)
  • 몸무게는 kg 단위
  • 공식: BMI = 몸무게(kg) / (키(m))²
  • 결과는 소수점 둘째 자리까지
입출력 예시
$ python bmi.py
키(cm): 175
몸무게(kg): 70
당신의 BMI는 22.86 입니다.
▶정답 코드 펼치기 / 접기
SOLUTION
height_cm = float(input("키(cm): "))
weight_kg = float(input("몸무게(kg): "))

height_m = height_cm / 100
bmi = weight_kg / (height_m ** 2)

print(f"당신의 BMI는 {bmi:.2f} 입니다.")
▶ 실행 결과
키(cm): 175
몸무게(kg): 70
당신의 BMI는 22.86 입니다.
과제 5

거스름돈 계산기

목표: 결제 금액과 받은 금액을 입력받아 거스름돈을 출력한다.

요구사항
  • 두 값 모두 정수로 입력 (원 단위)
  • 거스름돈 = 받은 금액 - 결제 금액
  • 천 단위 콤마 표시 (f"{value:,}")
입출력 예시
결제 금액: 7800
받은 금액: 10000
거스름돈: 2,200원
▶정답 코드 펼치기 / 접기
SOLUTION
paid = int(input("결제 금액: "))
received = int(input("받은 금액: "))
change = received - paid

print(f"거스름돈: {change:,}원")
▶ 실행 결과
결제 금액: 7800
받은 금액: 10000
거스름돈: 2,200원
과제 6

환율 변환기 (KRW ↔ USD)

목표: 원화(KRW)를 달러(USD)로, 달러를 원화로 한 번에 변환한다.

요구사항
  • 환율은 코드에 상수로 (예: RATE = 1300)
  • 입력값은 정수 또는 실수
  • 결과는 소수점 둘째 자리
입출력 예시
원화: 130000
달러: $100.00
▶정답 코드 펼치기 / 접기
SOLUTION
RATE = 1300

krw = float(input("원화: "))
usd = krw / RATE
print(f"달러: ${usd:.2f}")

# 도전: 거꾸로도
print(f"${usd:.2f} → {usd * RATE:,.0f}원")
▶ 실행 결과
원화: 130000
달러: $100.00
$100.00 → 130,000원
예제 코드 / 강의 자료

전체 강의 자료와 예제 코드는 GitHub에서 자유롭게 받아볼 수 있습니다.

GitHub에서 보기 ↗

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨 주세요.

댓글은 회원만 쓸 수 있습니다.

광고·욕설·비방·개인정보·불법 내용이 담긴 댓글은 숨기거나 지웁니다. 댓글은 닉네임과 함께 공개됩니다. 개인정보처리방침