01. 변수와 데이터 타입
변수 개념과 int·float·str·bool 네 가지 데이터 타입 다지기
목차
- 학습 목표
- 1. 변수(Variable)란?
- 정의
- 비유
- 기본 문법
- 실습 1-1. 변수에 선수 득점 저장하기
- 2. 변수명 규칙 (Naming Convention)
- 사용 가능한 문자
- 금지 사항
- 대소문자 구분
- 좋은 변수명
- 실습 1-2. 올바른 변수명 vs 잘못된 변수명
- 3. 데이터 타입 (Data Types)
- 파이썬의 4가지 기본 타입
- 타입 확인 방법
- 실습 1-3. 데이터 타입 확인하기
- 4. 정수형(int) 상세
- 정의
- 주요 연산자
- 실습 1-4. 축구 승점 계산 (정수형 활용)
- 5. 실수형(float) 상세
- 정의
- round() 함수
- 부동소수점 오차
- 실습 1-5. 득점 성공률·타율 계산 (실수형 활용)
- 6. 숫자 30과 문자열 ‘30’의 차이
- 핵심 차이
- 주의
- 실습 1-6. 숫자와 문자열 비교
- 7. 불(bool) 데이터 타입
- 정의
- 비교 연산자
- 실습 1-7. 에이스 판별 (bool 활용)
- 연습 문제
스포츠 데이터로 배우는 파이썬 기초.
학습 목표
- 변수의 개념과 역할 이해
- 변수명 작성 규칙 숙지
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 | 파이썬 내장 키워드 |
대소문자 구분
score와Score는 완전히 다른 변수
좋은 변수명
- 데이터의 의미를 알 수 있도록 명확하게 작명
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 // 2 → 3 |
% | 나머지 | 7 % 2 → 1 |
실습 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.2→0.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