코딩 실습

값을 코드에 직접 넣어 만들어 보기

먼저 값을 코드에 직접 적어 물품을 나눠 봅니다.

total_snacks = 120
booths = 8

snacks_per_booth = total_snacks // booths
snacks_left = total_snacks % booths

print("부스당 간식:", snacks_per_booth, "개")
print("남는 간식:", snacks_left, "개")
부스당 간식: 15 개
남는 간식: 0 개

//는 똑같이 나눈 몫(한 부스당 개수), %는 남는 나머지입니다. 여기까지는 앞서 익힌 내용 그대로입니다.

간식이 125개로 바뀌면 어떻게 할까요? 지금 방식으로는 코드의 120을 직접 125로 고쳐 다시 실행해야 합니다.

total_snacks = 125   # 값을 바꾸려면 코드를 고쳐야 한다
booths = 8
print(total_snacks // booths, total_snacks % booths)
15 5

값이 바뀔 때마다 코드를 고치는 것은 번거롭습니다. 그래서 실행할 때 사람이 값을 넣어 주는 방법이 필요합니다.

실행 중에 값 입력받기: input()

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

input()은 실행하면 멈춰 서서 사용자가 값을 치고 Enter를 누르기를 기다립니다. 입력한 값은 변수에 저장됩니다. 계산이 없어도 이렇게 사람과 대화하는 프로그램을 만들 수 있습니다.

flowchart LR
    A["사용자 입력<br/>홍길동"] --> B["input()"]
    B --> C["name 변수에 저장"]
    classDef u fill:#f3e8ff,stroke:#9333ea,color:#3b0764
    classDef v fill:#e8f1ff,stroke:#2563eb,color:#172554
    class A u
    class B,C v

input()이 값을 받아 변수에 담는 과정

한 가지 주의할 점이 있습니다. input()이 돌려주는 값은 항상 글자(문자열) 입니다.

number_text = input("숫자를 입력하세요: ")
print(number_text + number_text)

5를 입력하면 결과는 10이 아니라 55입니다. 글자로 받았기 때문에 +가 이어 붙이기로 동작한 것입니다. 화면에 5로 보여도 이 단계에서는 숫자가 아니라 글자입니다.

입력을 숫자로 바꾸기: int()

계산을 하려면 글자를 숫자로 바꿔야 합니다. 정수로 바꿀 때는 int()를 씁니다.

number_text = input("숫자를 입력하세요: ")
number = int(number_text)
print(number + number)

이제 5를 입력하면 결과는 10입니다. int()가 글자 "5"를 계산할 수 있는 정수 5로 바꿔 주었기 때문입니다.

flowchart LR
    A["'5'<br/>글자"] -->|int| B["5<br/>숫자"]
    B -->|+ 5| C["10<br/>계산 결과"]
    classDef s fill:#fff4d6,stroke:#d97706,color:#451a03
    classDef n fill:#e8f1ff,stroke:#2563eb,color:#172554
    class A s
    class B,C n

글자를 숫자로 바꿔 계산하기

입력과 변환을 한 줄로 붙여 쓰면 다음과 같습니다. 앞으로 자주 쓰는 형태입니다.

booths = int(input("부스 수: "))
print("부스 수:", booths)
노트

소수점이 있는 수는 int() 대신 float()로 바꿉니다. 예: weight = float(input("무게(kg): ")). int("여섯")처럼 숫자가 아닌 글자를 변환하려 하면 오류가 납니다. 지금은 숫자 형식으로 바르게 입력합니다.

앞의 프로그램을 입력받는 프로그램으로

이제 1단계의 간식 배분 프로그램을, 값을 입력받도록 바꿔 봅니다. 계산 부분(//, %)은 그대로이고, 앞부분만 input()int()로 바뀝니다.

# 입력
total_snacks = int(input("전체 간식 수: "))
booths = int(input("부스 수: "))

# 처리
snacks_per_booth = total_snacks // booths
snacks_left = total_snacks % booths

# 출력
print("부스당 간식:", snacks_per_booth, "개")
print("남는 간식:", snacks_left, "개")

이제 코드를 고치지 않고도, 실행할 때마다 다른 값을 넣어 결과를 확인할 수 있습니다. # 입력, # 처리, # 출력 세 구역으로 나눈 것은 앞서 익힌 입력–처리–출력 구조 그대로입니다.

의사코드 만들기

처음부터 파이썬 문법을 떠올리기 어렵다면, 먼저 한국어로 순서를 적어 봅니다. 이렇게 사람 말로 적은 절차를 의사코드라고 합니다.

전체 참가자 수를 입력받는다.
팀 수를 입력받는다.
참가자 수를 팀 수로 나눈 몫과 나머지를 구한다.
팀당 인원과 남는 인원을 출력한다.

같은 절차를 순서도로 나타내면 다음과 같습니다.

flowchart TD
    A([시작]) --> B[/전체 참가자 수 입력/]
    B --> C[/팀 수 입력/]
    C --> D["몫과 나머지 계산"]
    D --> E[/팀당 인원·남는 인원 출력/]
    E --> F([끝])
    classDef startend fill:#e8f8ee,stroke:#16a34a,color:#052e16
    classDef io fill:#e8f1ff,stroke:#2563eb,color:#172554
    classDef process fill:#fff4d6,stroke:#d97706,color:#451a03
    class A,F startend
    class B,C,E io
    class D process

팀 나누기 절차의 순서도

이 절차를 한 줄씩 파이썬으로 옮깁니다.

# 입력
total_people = int(input("전체 참가자 수: "))
teams = int(input("팀 수: "))

# 처리
people_per_team = total_people // teams
people_left = total_people % teams

# 출력
print("팀당 인원:", people_per_team, "명")
print("남는 인원:", people_left, "명")
의사코드의 한 줄 파이썬 표현
값을 입력받는다 input()
숫자로 바꾼다 int()
몫과 나머지를 구한다 //, %
결과를 출력한다 print()

의사코드는 사람의 설명과 파이썬 문법을 잇는 징검다리입니다. 어렵다고 느껴질수록 코드보다 말로 먼저 적어 보는 습관이 도움이 됩니다.

행사 물품 배분기 예제

지금까지 익힌 변수·//·%·출력과 입력·형변환·의사코드를 하나로 모읍니다.

행사 이름과 물품 이름을 입력받는다.
전체 수량과 장소 수를 숫자로 입력받는다.
한 곳당 수량과 남는 수량을 계산한다.
행사명·물품명·배분 결과를 출력한다.
# 입력
event_name = input("행사 이름: ")
item_name = input("물품 이름: ")
total_items = int(input("전체 수량: "))
places = int(input("배분할 장소 수: "))

# 처리
items_per_place = total_items // places
items_left = total_items % places

# 출력
print(event_name, "-", item_name, "배분 결과")
print("한 곳당:", items_per_place, "개")
print("남는 수량:", items_left, "개")

변수 이름을 특정 물품에 묶지 않고 total_items, places처럼 일반적으로 지었으므로, 간식이든 안내지도든 같은 프로그램으로 나눌 수 있습니다.

실습 문제

1. 입력받아 인사하기

input()으로 이름을 받아 name에 저장하고, print("반갑습니다,", name)으로 인사를 출력하세요. 계산은 없습니다. 입력한 값이 그대로 출력에 쓰이는 것을 확인합니다.

2. 입력받아 계산하기

전체 참가자 수와 팀 수를 입력받아 팀당 인원과 남는 인원을 구하세요.

  • 두 값을 int(input(...))으로 받습니다.
  • 팀당 인원은 //, 남는 인원은 %로 계산합니다.
  • # 입력, # 처리, # 출력 주석을 넣습니다.

53명을 6팀으로 나누면 팀당 8명, 남는 인원 5명이 나오는지 확인하세요.

3. 의사코드부터 시작하는 미니 프로그램

동아리 회비를 정산하는 프로그램을 만드세요.

  • 먼저 의사코드(한국어 순서)를 세 줄 이상 적습니다.
  • 회원 수와 1인당 회비를 입력받습니다.
  • 전체 회비를 회원 수 × 1인당 회비로 계산해 출력합니다.

조건: 의사코드 포함, 변수 세 개 이상, input() 두 번 이상, 계산식 한 개 이상, print()로 결과에 단위(원)를 함께 출력.

4. 부스 순이익 계산

한 부스의 순이익(= 전체 매출 − 전체 비용)을 구합니다. 큰 문제를 작은 문제로 나누어 각각 해결한 뒤 합치세요.

  1. 문제 분해 — 세 개의 하위 문제로 나눕니다.
    • 하위 문제 ①: 음료 매출 = 음료 판매량 × 음료 단가
    • 하위 문제 ②: 간식 매출 = 간식 판매량 × 간식 단가
    • 하위 문제 ③: 전체 비용 = 재료비 + 대여비
  2. 패턴 찾기 — ①과 ②에서 반복되는 계산 구조를 한 문장으로 적습니다.
  3. 결합 — 하위 결과를 합쳐 순이익 = (음료 매출 + 간식 매출) − 전체 비용을 구합니다.
  4. 의사코드 → 파이썬 구현 — 필요한 값을 int(input(...))으로 받아 위 순서대로 계산하고, 매출·비용·순이익을 단위와 함께 출력합니다.

확인: 음료 120잔×2000원, 간식 80개×1500원, 재료비 150000원, 대여비 50000원이면 매출 360000원, 비용 200000원, 순이익 160000원이 나오는지 확인하세요.