print("대학 축제 준비를 시작합니다.")
print(120)대학 축제 준비를 시작합니다.
120
Shift + Enter로 실행합니다.print("대학 축제 준비를 시작합니다.")
print(120)대학 축제 준비를 시작합니다.
120
print()는 괄호 안의 값을 화면에 보여 주라는 명령입니다. 코드 셀에 적은 것은 명령이고 실행 뒤 나타난 것은 결과입니다. 파이썬은 위에서 아래로 한 줄씩 실행합니다.
flowchart LR
A["코드 셀<br/>print(100 + 20)"] -->|실행| B["파이썬<br/>명령 해석·계산"]
B --> C["실행 결과<br/>120"]
classDef code fill:#e8f1ff,stroke:#2563eb,color:#172554
classDef python fill:#fff4d6,stroke:#d97706,color:#451a03
classDef result fill:#e8f8ee,stroke:#16a34a,color:#052e16
class A code
class B python
class C result
화살표를 왼쪽에서 오른쪽으로 읽습니다. 작성한 코드를 파이썬이 해석하면 실행 결과가 나타납니다.
print("100 + 20")
print(100 + 20)100 + 20
120
첫 줄은 따옴표 안의 글자를 그대로 출력하고, 둘째 줄은 계산 결과 120을 출력합니다. 글자는 따옴표로 감싸지만 계산할 숫자는 따옴표로 감싸지 않습니다.
event_name = "가을 축제"
visitors = 240
print(event_name)
print(visitors)가을 축제
240
변수는 값을 보관하는 이름입니다. visitors = 240은 오른쪽 값 240을 왼쪽 변수에 저장하라는 뜻입니다. 수학의 등호처럼 양쪽이 같다는 판정이 아닙니다. 오른쪽부터 “240을 visitors에 저장한다”라고 읽습니다.
a = 240보다 visitors = 240이 값의 역할을 잘 드러냅니다. 이름은 숫자로 시작하거나 공백을 포함할 수 없으므로 여러 단어는 event_name처럼 밑줄로 연결합니다.
event_name = "가을 축제"
visitors = 240
open_rate = 0.85
is_open = True
print(event_name, type(event_name))
print(visitors, type(visitors))
print(open_rate, type(open_rate))
print(is_open, type(is_open))가을 축제 <class 'str'>
240 <class 'int'>
0.85 <class 'float'>
True <class 'bool'>
type()은 값의 자료형을 알려 줍니다. "가을 축제"는 문자열(str), 240은 정수(int), 0.85는 실수(float), True는 불리언(bool)입니다. 문자열은 글자로 취급하고, 정수와 실수는 계산할 수 있습니다.
visitors = 240
print("집계 전:", visitors)
visitors = 252
print("집계 후:", visitors)집계 전: 240
집계 후: 252
같은 변수에 새 값을 저장하면 그 줄 이후에는 새 값이 사용됩니다. 이미 출력한 결과가 바뀌는 것은 아닙니다.
flowchart LR
A["visitors 상자<br/>240"] -->|"visitors = 252 실행"| B["visitors 상자<br/>252"]
classDef before fill:#e8f1ff,stroke:#2563eb,color:#172554
classDef after fill:#f3e8ff,stroke:#9333ea,color:#3b0764
class A before
class B after
변수를 이름표가 붙은 상자로 생각합니다. =를 실행하면 오른쪽 값이 상자에 들어갑니다. 같은 상자에 새 값을 넣으면 이전 값 대신 새 값이 저장됩니다.
| 실행한 줄 | visitors 값 |
출력 |
|---|---|---|
visitors = 240 |
240 | 없음 |
첫 번째 print() |
240 | 집계 전: 240 |
visitors = 252 |
252 | 없음 |
두 번째 print() |
252 | 집계 후: 252 |
파이썬에서는 계산 기호를 연산자라고 합니다. 같은 두 숫자라도 어떤 연산자를 사용하는지에 따라 결과가 달라집니다.
print(18 + 7) # 18에 7 더하기
print(18 - 7) # 18에서 7 빼기
print(18 * 7) # 18을 7번 더한 값
print(18 / 7) # 18을 7로 나눈 값
print(18 // 7) # 18 안에 7이 몇 번 들어가는지
print(18 % 7) # 18에서 7을 두 번 빼고 남는 값
print(4 ** 2) # 4를 두 번 곱한 값25
11
126
2.5714285714285716
2
4
16
| 연산자 | 읽는 방법 | 결과 | 주로 사용하는 상황 |
|---|---|---|---|
18 + 7 |
18 더하기 7 | 25 | 수량이나 금액을 합할 때 |
18 - 7 |
18 빼기 7 | 11 | 사용하고 남은 값을 구할 때 |
18 * 7 |
18 곱하기 7 | 126 | 같은 수량이 여러 묶음 있을 때 |
18 / 7 |
18 나누기 7 | 약 2.57 | 정확한 나눗셈 결과가 필요할 때 |
18 // 7 |
18 나누기 7의 몫 | 2 | 완성할 수 있는 묶음 수를 구할 때 |
18 % 7 |
18 나누기 7의 나머지 | 4 | 묶고 남는 수량을 구할 때 |
4 ** 2 |
4의 2제곱 | 16 | 같은 수를 여러 번 곱할 때 |
/는 소수점이 포함된 나눗셈 결과를 구합니다. //와 %는 하나의 나눗셈을 두 관점으로 나누어 봅니다. 예를 들어 18개를 7개씩 묶으면 완성된 묶음은 2개이고 4개가 남습니다.
18개 = 7개 × 2묶음 + 4개
↑ ↑
18 // 7 18 % 7
이 관계는 전체 수량 = 묶음 크기 × 몫 + 나머지로 나타낼 수 있습니다.
total_water = 245
booths = 6
water_per_booth = total_water // booths
water_left = total_water % booths
print("부스당 생수:", water_per_booth, "병")
print("남는 생수:", water_left, "병")부스당 생수: 40 병
남는 생수: 5 병
생수 245병을 6개 부스에 나누면 각 부스에 40병씩 줄 수 있고 5병이 남습니다. /를 사용한 40.8333...병은 실제 생수병을 나누는 답으로 적절하지 않으므로, 온전한 병의 수는 //, 남는 병은 %로 계산합니다.
# 뒤의 글은 주석입니다. 주석은 코드의 계산 방법이나 값의 단위를 사람이 알아볼 수 있게 기록하며, 파이썬은 실행하지 않습니다.
total_water = 245
booths = 6
water_per_booth = total_water // booths
water_left = total_water % booths
print("부스당 생수:", water_per_booth, "병")
print("남는 생수:", water_left, "병")부스당 생수: 40 병
남는 생수: 5 병
계산 결과에도 이름을 붙이면 코드의 의미가 분명해집니다. print() 안에서 쉼표로 값을 나열하면 문자열과 숫자를 함께 출력할 수 있습니다.
# 입력: 문제를 푸는 데 필요한 값
total_snacks = 125
booths = 6
# 처리: 입력값으로 결과 계산
snacks_per_booth = total_snacks // booths
snacks_left = total_snacks % booths
# 출력: 결과를 사용자에게 전달
print("부스당 간식:", snacks_per_booth, "개")
print("남는 간식:", snacks_left, "개")부스당 간식: 20 개
남는 간식: 5 개
여기서 입력은 키보드 입력만 뜻하지 않습니다. 프로그램이 처음 제공받는 값 전체를 뜻합니다.
flowchart LR
A["입력<br/>간식 125개<br/>부스 6곳"] --> B["처리<br/>몫 계산<br/>나머지 계산"]
B --> C["출력<br/>20개씩<br/>5개 남음"]
classDef input fill:#e8f1ff,stroke:#2563eb,color:#172554
classDef process fill:#fff4d6,stroke:#d97706,color:#451a03
classDef output fill:#e8f8ee,stroke:#16a34a,color:#052e16
class A input
class B process
class C output
입력은 출발할 때 가진 재료, 처리는 재료로 하는 계산, 출력은 사용자에게 전달할 결과입니다. 코드의 주석 세 구역과 그림의 세 상자를 대응해 봅니다.
변수에는 처음 주어진 값뿐 아니라 계산한 결과도 저장할 수 있습니다. 오전 방문객 수와 운영 시간을 각각 변수에 저장한 뒤, 두 변수를 나누어 시간당 평균 방문객 수를 계산합니다.
morning_visitors = 120
morning_hours = 3
morning_average = morning_visitors / morning_hours
print("오전 시간당:", morning_average, "명")오전 시간당: 40.0 명
세 변수의 역할은 서로 다릅니다.
| 변수 | 저장되는 값 | 역할 |
|---|---|---|
morning_visitors |
120 | 계산에 사용할 방문객 수 |
morning_hours |
3 | 계산에 사용할 운영 시간 |
morning_average |
40.0 | 두 변수로 계산한 새로운 값 |
flowchart LR
A["morning_visitors<br/>120"] --> C["나누기 /"]
B["morning_hours<br/>3"] --> C
C --> D["morning_average<br/>40.0"]
classDef input fill:#e8f1ff,stroke:#2563eb,color:#172554
classDef process fill:#fff4d6,stroke:#d97706,color:#451a03
classDef output fill:#e8f8ee,stroke:#16a34a,color:#052e16
class A,B input
class C process
class D output
morning_average = morning_visitors / morning_hours는 다음 순서로 실행됩니다.
morning_visitors에서 120을 가져옵니다.morning_hours에서 3을 가져옵니다.120 / 3을 계산합니다.40.0을 morning_average에 저장합니다.결과를 저장할 변수 = 계산에 사용할 변수 / 계산에 사용할 변수
morning_average = morning_visitors / morning_hours
프로그래밍에서는 값을 코드에 반복해서 직접 적는 대신 변수에 저장하고, 변수 이름을 사용해 계산합니다. 계산 결과도 새 변수에 저장하면 그 값을 출력하거나 다른 계산에 다시 사용할 수 있습니다.
아래 주석 기호를 하나씩 지우고 각각 별도 셀에서 실행합니다.
# print("축제 운영을 시작합니다.) # 따옴표가 닫히지 않음
# print(total_visiters) # 정의하지 않은 이름
# print("방문객: " + 240) # 문자열과 정수를 +로 연결SyntaxError: 문법 오류입니다. 따옴표와 괄호를 확인합니다.NameError: 변수 정의 여부와 철자를 확인합니다.TypeError: 값의 종류에 맞는 연산인지 확인합니다.total_visitors = 240
print("축제 운영을 시작합니다.")
print("방문객:", total_visitors)축제 운영을 시작합니다.
방문객: 240
오류가 발생하면 ① 마지막 줄에서 오류 이름을 찾고, ② 표시된 코드 줄을 확인하고, ③ 한 가지를 고친 뒤 다시 실행합니다.
flowchart LR
A[코드 실행] --> B{오류 발생?}
B -->|아니요| C[결과 확인]
B -->|예| D[마지막 오류 줄 읽기]
D --> E[한 가지 수정]
E --> A
classDef action fill:#e8f1ff,stroke:#2563eb,color:#172554
classDef decision fill:#fff4d6,stroke:#d97706,color:#451a03
class A,C,D,E action
class B decision
오류는 실패의 표시가 아니라 수정할 위치를 알려 주는 정보입니다. 여러 곳을 한꺼번에 바꾸지 말고 한 가지씩 고쳐 다시 실행합니다.
# 입력
event_name = "가을빛 축제"
desks = 6
maps = 250
wristbands = 365
# 처리
maps_per_desk = maps // desks
maps_left = maps % desks
wristbands_per_desk = wristbands // desks
wristbands_left = wristbands % desks
# 출력
print(event_name)
print("안내지도:", maps_per_desk, "장씩, 남음", maps_left, "장")
print("손목띠:", wristbands_per_desk, "개씩, 남음", wristbands_left, "개")가을빛 축제
안내지도: 41 장씩, 남음 4 장
손목띠: 60 개씩, 남음 5 개
지도와 손목띠는 다르지만 전체 수량 // 안내소 수, 전체 수량 % 안내소 수라는 같은 패턴으로 처리했습니다.
다음 세 가지를 각각 print()로 한 줄씩 출력하세요.
12 + 8의 계산 결과마지막 줄은 20이 아니라 계산식 12 + 8을 그대로 적어 파이썬이 계산하게 합니다.
동아리 회비를 계산합니다.
members에 회원 수 8, fee에 1인당 회비 5000을 저장합니다.total을 members * fee로 계산해 print("전체 회비:", total, "원")으로 출력합니다.members에 12를 새로 저장하고, total을 다시 계산해 한 번 더 출력합니다.두 번째 출력이 첫 번째와 달라진 이유를 한 줄로 설명해 보세요.
간식을 부스에 똑같이 나누는 프로그램을 만드세요.
total_snacks에 146, 부스 booths에 8을 저장합니다.//, 남는 개수는 %로 계산합니다.# 입력, # 처리, # 출력 주석을 각각 한 줄씩 넣습니다.print("부스당:", ..., "개"), print("남는 간식:", ..., "개") 두 줄로 출력합니다.조건: 변수 세 개 이상, 계산식 두 개 이상, print() 두 번 이상, 주석 한 줄 이상을 포함합니다.