04 — LECTURE ·PY-01 ·2026.02.02

01. 변수와 데이터 타입

변수 개념과 int·float·str·bool 네 가지 데이터 타입 다지기

목차
  1. 학습 목표
  2. 1. 변수(Variable)란?
  3. 정의
  4. 비유
  5. 기본 문법
  6. 실습 1-1. 변수에 선수 득점 저장하기
  7. 2. 변수명 규칙 (Naming Convention)
  8. 사용 가능한 문자
  9. 금지 사항
  10. 대소문자 구분
  11. 좋은 변수명
  12. 실습 1-2. 올바른 변수명 vs 잘못된 변수명
  13. 3. 데이터 타입 (Data Types)
  14. 파이썬의 4가지 기본 타입
  15. 타입 확인 방법
  16. 실습 1-3. 데이터 타입 확인하기
  17. 4. 정수형(int) 상세
  18. 정의
  19. 주요 연산자
  20. 실습 1-4. 축구 승점 계산 (정수형 활용)
  21. 5. 실수형(float) 상세
  22. 정의
  23. round() 함수
  24. 부동소수점 오차
  25. 실습 1-5. 득점 성공률·타율 계산 (실수형 활용)
  26. 6. 숫자 30과 문자열 ‘30’의 차이
  27. 핵심 차이
  28. 주의
  29. 실습 1-6. 숫자와 문자열 비교
  30. 7. 불(bool) 데이터 타입
  31. 정의
  32. 비교 연산자
  33. 실습 1-7. 에이스 판별 (bool 활용)
  34. 연습 문제

스포츠 데이터로 배우는 파이썬 기초.

학습 목표

  • 변수의 개념과 역할 이해
  • 변수명 작성 규칙 숙지
  • int, float, str, bool 네 가지 데이터 타입 구분
  • type() 함수로 데이터 타입 확인
  • 스포츠 데이터를 변수에 저장하고 출력

1. 변수(Variable)란?

정의

  • 컴퓨터 메모리 공간에 이름을 붙여 데이터를 저장하는 그릇
  • = (할당 연산자)를 사용해 값을 저장
  • 한 번 저장한 값을 나중에 꺼내 쓰거나, 새 값으로 덮어쓸 수 있음

비유

  • 이름이 적힌 서랍 → 서랍 이름 = 변수명, 서랍 안 내용물 = 값
  • son_goals = 20"son_goals"라는 서랍에 20을 넣음

기본 문법

변수명 = 값

실습 1-1. 변수에 선수 득점 저장하기

  • 두 선수의 득점을 각각 변수에 저장
  • + 연산으로 합계 계산
  • print() 함수로 결과 출력
# 선수 득점 데이터를 변수에 저장
son_goals = 20
kane_goals = 15

# 두 선수의 총 득점 계산
total_goals = son_goals + kane_goals

# 결과 출력
print('손흥민 득점:', son_goals)
print('케인 득점:', kane_goals)
print('-------- 합계 --------')
print('총 득점:', total_goals)

출력:

손흥민 득점: 20
케인 득점: 15
-------- 합계 --------
총 득점: 35

2. 변수명 규칙 (Naming Convention)

사용 가능한 문자

  • 영문 대소문자 (a-z, A-Z)
  • 숫자 (0-9) — 단, 첫 글자로 사용 불가
  • 밑줄 (_)

금지 사항

규칙잘못된 예이유
숫자로 시작 불가7player숫자가 맨 앞
공백 포함 불가my score띄어쓰기 있음
특수문자 불가rank!! 사용
예약어 불가class파이썬 내장 키워드

대소문자 구분

  • scoreScore는 완전히 다른 변수

좋은 변수명

  • 데이터의 의미를 알 수 있도록 명확하게 작명
  • a = 20 보다 age = 20 이 좋음

실습 1-2. 올바른 변수명 vs 잘못된 변수명

# ✅ 올바른 변수명
player_name = 'Son'       # 밑줄 사용 OK
season2024 = 2024          # 숫자 포함 OK (첫 글자 아님)
_assist = 5                # 밑줄로 시작 OK
totalScore = 95            # 카멜 표기법 OK

print(player_name, season2024, _assist, totalScore)

출력:

Son 2024 5 95
# ❌ 잘못된 변수명 — 주석 해제하면 오류 발생!
# 7player = 'Kane'       # 숫자로 시작 → SyntaxError
# my-score = 10          # 하이픈(빼기로 인식) → SyntaxError
# team name = 'Spurs'    # 공백 포함 → SyntaxError
# rank! = 1              # 특수문자(!) → SyntaxError

3. 데이터 타입 (Data Types)

파이썬의 4가지 기본 타입

타입키워드설명스포츠 예시
정수int소수점 없는 숫자득점 수, 경기 수, 관중 수
실수float소수점 있는 숫자평균 득점, 승률, 타율
문자열str따옴표로 감싼 텍스트선수 이름, 팀명
bool참/거짓True, False

타입 확인 방법

  • type(변수명) 함수 사용

실습 1-3. 데이터 타입 확인하기

  • 선수 정보를 다양한 타입으로 저장
  • type() 으로 각 변수의 타입 확인
  • 나눗셈(/) 결과는 항상 float
# 선수 정보 — 다양한 데이터 타입
player_name = 'Son Heung-min'   # 문자열(str)
goals = 23                      # 정수(int)
matches = 35                    # 정수(int)

# 평균 득점 계산 → 나눗셈 결과는 항상 실수(float)
avg_goals = goals / matches

# 데이터 출력
print('선수명:', player_name)
print('시즌 득점:', goals)
print('경기당 평균 득점:', avg_goals)

# 타입 확인
print('-------- 타입 확인 --------')
print(type(player_name))   # <class 'str'>
print(type(goals))         # <class 'int'>
print(type(avg_goals))     # <class 'float'>

출력:

선수명: Son Heung-min
시즌 득점: 23
경기당 평균 득점: 0.6571428571428571
-------- 타입 확인 --------
<class 'str'>
<class 'int'>
<class 'float'>

4. 정수형(int) 상세

정의

  • 소수점이 없는 숫자
  • 경기 수, 득점, 순위, 관중 수 등에 사용

주요 연산자

연산자의미예시
//몫 (정수 나누기)7 // 23
%나머지7 % 21

실습 1-4. 축구 승점 계산 (정수형 활용)

  • 승점 공식 : 승리 × 3 + 무승부 × 1
  • 무승부 = 총경기 − 승 − 패
# 축구 리그 승점 계산
team_name = 'FC Seoul'
matches = 38
wins = 24
losses = 8

# 무승부 계산
draws = matches - wins - losses

# 승점 계산
points = (wins * 3) + draws

print('팀명:', team_name)
print('전적:', wins, '승', draws, '무', losses, '패')
print('최종 승점:', points)
print('데이터 타입:', type(points))

출력:

팀명: FC Seoul
전적: 24 승 6 무 8 패
최종 승점: 78
데이터 타입: <class 'int'>

5. 실수형(float) 상세

정의

  • 소수점이 포함된 숫자
  • 평균 득점, 타율, 승률, 점유율 등에 사용

round() 함수

  • 소수점 자릿수가 너무 길 때 반올림
  • round(숫자, 자릿수) 형태

부동소수점 오차

  • 컴퓨터는 실수를 2진수로 표현 → 미세한 오차 발생
  • 0.1 + 0.20.30000000000000004
  • 해결 : round() 또는 f-string 서식 사용

실습 1-5. 득점 성공률·타율 계산 (실수형 활용)

# 축구 득점 성공률
goals = 22
shots = 95
goal_rate = goals / shots

# 야구 타율
hits = 172
at_bats = 550
batting_avg = hits / at_bats

# 보기 좋게 반올림
print('득점 성공률:', round(goal_rate * 100, 1), '%')
print('시즌 타율:', round(batting_avg, 3))

# 부동소수점 오차 확인
print()
print('0.1 + 0.2 =', 0.1 + 0.2)

출력:

득점 성공률: 23.2 %
시즌 타율: 0.313

0.1 + 0.2 = 0.30000000000000004

6. 숫자 30과 문자열 ‘30’의 차이

핵심 차이

구분30 (int)'30' (str)
타입정수문자열
저장 방식2진수 값문자 코드
연산산술 연산 가능문자 연결만 가능
용도득점(계산용)등번호(표시용)

주의

  • '10' + '20' = '1020' (30이 아님)
  • input() 으로 받은 값은 항상 문자열

실습 1-6. 숫자와 문자열 비교

# 숫자 vs 문자열
a = 30         # 정수 — 득점
b = '30'       # 문자열 — 등번호

print(type(a), type(b))

# 정수는 연산 가능
print(a + 1)           # 31

# 문자열은 연결만 가능
print('No.' + b)       # No.30

# 문자열끼리 + 는 연결!
print('10' + '20')     # 1020 (30이 아님!)

출력:

<class 'int'> <class 'str'>
31
No.30
1020

7. 불(bool) 데이터 타입

정의

  • True(참)와 False(거짓) 두 가지 값만 존재
  • 비교 연산자의 결과로 반환됨
  • 조건문(if)에서 코드 실행 여부를 결정할 때 핵심

비교 연산자

연산자의미
>크다
<작다
==같다
!=다르다
>=크거나 같다
<=작거나 같다

실습 1-7. 에이스 판별 (bool 활용)

# 20골 이상이면 에이스?
goals = 22
is_ace = goals > 20

print('득점:', goals)
print('에이스인가?:', is_ace)
print('타입 확인:', type(is_ace))

출력:

득점: 22
에이스인가?: True
타입 확인: <class 'bool'>
# 승률 판단
win_rate = 0.485

if win_rate >= 0.5:
    print('5할 승률 달성! Playoffs 진출 유력')
else:
    print('5할 미만.. 분발이 필요합니다.')

출력:

5할 미만.. 분발이 필요합니다.

연습 문제

Q1. 다음 중 올바른 변수명은?

A) 7player B) player-name C) class D) player_7

Q2. print(type(30), type('30')) 의 출력 결과는?

A) <class 'str'>, <class 'int'> B) <class 'int'>, <class 'str'>

Q3. 22 >= 22 의 결과는?

A) True B) False

# 연습 문제 정답
print("Q1 정답: D — 숫자로 시작(A), 하이픈(B), 예약어(C) 불가")
print("Q2 정답: B — 30은 int, '30'은 str")
print("Q3 정답: A — 22는 22보다 크거나 같으므로 True")

출력:

Q1 정답: D — 숫자로 시작(A), 하이픈(B), 예약어(C) 불가
Q2 정답: B — 30은 int, '30'은 str
Q3 정답: A — 22는 22보다 크거나 같으므로 True