본문으로 건너뛰기
Python 기초집LESSON 03

변수, 자료형, 입력과 출력

난이도입문
예상 시간30분
선수지식이전 강의

3강. 변수, 자료형, 입력과 출력

1. 이번 강의에서 해결할 문제​

프로그램은 플레이어 이름, 점수, 이동 속도처럼 실행 중에 달라지는 데이터를 기억해야 합니다. 값의 종류를 구분하지 않으면 "120" + "30"이 150이 아니라 "12030"이 되거나, 숫자가 아닌 입력을 계산하려다 프로그램이 멈춥니다. 이번 강의에서는 값에 이름을 붙이고, 목적에 맞는 타입으로 다루는 방법부터 시작합니다.

2. 학습 목표​

3. 핵심 개념​

변수는 값을 담는 상자보다 '값에 붙인 이름'에 가깝습니다​

Python에서 score = 120은 score라는 이름을 정수 값 120에 연결합니다. 이후 score = 150을 실행하면 기존 정수를 고치는 것이 아니라, 같은 이름을 새 값 150에 다시 연결합니다. 프로그램은 이 이름을 통해 값을 다시 읽고 계산합니다.

score = 120
print(score) # 120

score = 150
print(score) # 150

=는 '서로 같다'는 수학 기호가 아니라 오른쪽 결과를 왼쪽 이름에 대입한다는 뜻입니다. 비교는 ==를 사용합니다.

자료형은 값으로 할 수 있는 일을 정합니다​

타입뜻예시어울리는 데이터
int소수점 없는 정수120, -3점수, 목숨, 아이템 개수
float소수점이 있는 수2.5, 0.875이동 속도, 시간, 확률
str글자들의 순서인 문자열"Seokhyeon"이름, 직업, 안내 문장
bool참 또는 거짓True, False게임 종료 여부, 치명타 여부
None아직 의미 있는 값이 없음None아직 선택되지 않은 대상

int와 float는 계산할 수 있지만 str은 글자를 연결합니다. bool은 이후 조건문에서 '실행할지 말지'를 결정합니다. float는 많은 소수를 근삿값으로 저장하므로 돈처럼 정확한 소수 계산이 필요한 분야에서는 별도 방법이 필요합니다.

의미 있는 이름은 데이터의 목적을 남깁니다​

x = 120보다 player_score = 120이 좋습니다. Python에서는 여러 단어를 소문자와 밑줄로 잇는 snake_case를 주로 사용합니다. 이름만 읽어도 단위와 뜻이 모호하지 않게 time보다 elapsed_seconds처럼 적습니다.

input()의 결과는 언제나 문자열입니다​

키보드로 120을 입력해도 input()이 돌려주는 값은 "120"입니다. 계산하기 전에 목적에 맞게 변환해야 합니다.

score_text = input("점수: ") # 사용자가 120을 입력해도 str
score = int(score_text) # 숫자 모양 문자열을 int로 변환

int("120")은 성공하지만 int("백이십")과 int("3.5")는 ValueError를 냅니다. 변환은 잘못된 입력을 자동으로 고치는 기능이 아니라 요구한 타입의 값인지 확인하는 경계입니다.

4. 가장 작은 예제로 시작하기​

먼저 입력 없이 네 종류의 값을 만들어 출력합니다. 파일은 C:\dev\game-log-analyzer\main.py입니다.

main.py
player_name = "Seokhyeon"
score = 120
move_speed = 2.5
is_game_over = False

print(player_name)
print(score)
print(move_speed)
print(is_game_over)

코드 한 줄씩 이해하기​

  1. player_name = "Seokhyeon"은 이름을 나타내는 str 값에 player_name을 연결합니다.
  2. score = 120은 소수점이 필요 없는 점수이므로 int를 사용합니다.
  3. move_speed = 2.5는 소수점이 필요한 속도이므로 float입니다.
  4. is_game_over = False는 종료 여부라는 두 가지 상태를 bool로 표현합니다.
  5. 네 번의 print()는 현재 각 이름이 가리키는 값을 위에서 아래 순서로 보여 줍니다.

예상 출력:

Seokhyeon
120
2.5
False

score = 200으로 바꾸면 두 번째 줄만 200이 됩니다. 값 변경이 화면 결과에 어떻게 연결되는지 먼저 확인해야 합니다.

5. 입력부터 조건 판단까지의 동작 흐름​

이제 키보드 입력을 타입에 맞게 변환하고, 점수에 따라 메시지를 바꿉니다.

main.py
print("=== 캐릭터 상태 ===")

player_name = input("플레이어 이름: ").strip()
score = int(input("점수: "))
move_speed = float(input("이동 속도: "))
is_game_over = input("게임이 끝났나요? (y/n): ").strip().lower() == "y"

print(f"이름: {player_name}")
print(f"점수: {score}, 이동 속도: {move_speed}")

if score >= 100:
print("상급 보상을 받을 수 있습니다.")
else:
print("100점까지 조금만 더 도전하세요.")

if is_game_over:
print("게임 결과를 저장합니다.")
else:
print("게임을 계속합니다.")
PowerShell · 실행
Set-Location C:\dev\game-log-analyzer
py -3.13 .\main.py

Seokhyeon, 120, 2.5, n을 차례로 입력하면 다음 흐름으로 처리됩니다.

순서표현식만들어지는 값타입
1input(...).strip()"Seokhyeon"str
2int(input(...))120int
3float(input(...))2.5float
4...lower() == "y"Falsebool
5score >= 100Truebool

따라서 보상 문장은 상급 보상으로, 종료 문장은 게임 계속으로 출력됩니다. score를 80으로 바꾸면 비교 결과가 False가 되어 보상 문장만 달라집니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

10. 다음 강의 연결​

이제 데이터를 타입에 맞게 저장할 수 있습니다. 다음 강의에서는 이 값들에 산술·비교·논리 연산을 적용해 실제 피해량과 생존 여부를 계산합니다.

MINI QUIZ

변수, 자료형, 입력과 출력 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“변수, 자료형, 입력과 출력” 실행 결과를 설명하는 내용으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘int(3.9)가 반올림한다고 생각’ 상태에 관한 “변수, 자료형, 입력과 출력” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

3강. 변수, 자료형, 입력과 출력 미완료 상태