1  코딩실습

1.1 값의 자료형 확인하기

파이썬은 값의 종류에 따라 사용할 수 있는 연산을 구분합니다. type()은 값의 자료형을 알려 줍니다.

student_count = 28
average_score = 82.5
class_name = "컴퓨팅적사고"
submitted = True

print(student_count, type(student_count))
print(average_score, type(average_score))
print(class_name, type(class_name))
print(submitted, type(submitted))
28 <class 'int'>
82.5 <class 'float'>
컴퓨팅적사고 <class 'str'>
True <class 'bool'>
값의 용도 알맞은 자료형
개수와 횟수 int 학생 수 28
소수점이 있는 측정값 float 평균 82.5
이름과 식별번호 str 학번 "012345"
참·거짓 상태 bool 제출 여부 True

학번과 전화번호는 숫자 모양이지만 계산하지 않고 앞자리의 0을 보존해야 하므로 문자열이 알맞습니다. 자료형은 값의 모양보다 그 값으로 무엇을 할 것인지에 따라 선택합니다.

1.2 입력값을 자료형으로 변환하기

input()으로 받은 값은 항상 문자열입니다. 계산할 값은 int()float()로 변환합니다.

box_count = int(input("상자 수: "))
weight = float(input("상자 한 개의 무게(kg): "))
total_weight = box_count * weight

print("전체 무게:", total_weight, "kg")

32.5를 입력하면 전체 무게는 7.5 kg이 됩니다. 이름이나 주소처럼 계산하지 않는 입력은 문자열 상태로 그대로 사용합니다.

flowchart LR
    A["키보드 입력<br/>'3', '2.5'"] --> B["문자열<br/>str"]
    B --> C["int(), float()<br/>자료형 변환"]
    C --> D["숫자<br/>3, 2.5"]
    D --> E["곱셈<br/>3 × 2.5"]
    E --> F["결과<br/>7.5kg"]
    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,E process
    class D,F output

입력값이 계산 결과로 바뀌는 과정

1.3 산술 연산과 계산 순서

파이썬은 곱셈과 나눗셈을 덧셈과 뺄셈보다 먼저 계산합니다. 괄호는 계산 순서를 바꿉니다.

unit_price = 12000
quantity = 3
delivery_fee = 3000
total_price = unit_price * quantity + delivery_fee
print("결제 금액:", total_price, "원")

print(3 + 4 * 2)
print((3 + 4) * 2)
결제 금액: 39000 원
11
14

3 + 4 * 2는 곱셈을 먼저 하여 11이지만, (3 + 4) * 2는 괄호 안을 먼저 하여 14입니다.

1.4 몫·나머지·거듭제곱

//와 나머지 %는 물품을 일정한 크기로 묶을 때 함께 사용합니다. 거듭제곱은 **로 계산합니다.

total_cans = 53
cans_per_box = 10
full_boxes = total_cans // cans_per_box
remaining_cans = total_cans % cans_per_box

print("완성된 상자:", full_boxes, "개")
print("남는 캔:", remaining_cans, "개")

square_side = 6
print("정사각형 넓이:", square_side ** 2)
완성된 상자: 5 개
남는 캔: 3 개
정사각형 넓이: 36

1.5 복합 대입으로 값 변경하기

복합 대입 연산자는 현재 변수값을 계산한 뒤 결과를 같은 변수에 다시 저장합니다.

points = 1000
print("시작:", points)

points -= 250
print("사용 후:", points)

points += 500
print("적립 후:", points)

points *= 2
print("두 배 행사 후:", points)
시작: 1000
사용 후: 750
적립 후: 1250
두 배 행사 후: 2500
복합 대입 같은 의미의 대입문
points += 500 points = points + 500
points -= 250 points = points - 250
points *= 2 points = points * 2

각 줄은 바로 앞 단계에서 변경된 값을 사용합니다.

1.6 f-string으로 결과 출력하기

문자열과 숫자를 +로 직접 연결하면 TypeError가 발생합니다. f-string을 쓰면 자료형이 다른 값을 문장 안에 넣을 수 있고, 중괄호 안에는 변수나 계산식을 넣을 수 있습니다.

student_name = "김민서"
major = "행정학"
score = 82.5
price = 12500
quantity = 3

print(f"{student_name} 학생의 전공은 {major}입니다.")
print(f"점수는 {score:.1f}점입니다.")
print(f"총액: {price * quantity:,}원")
김민서 학생의 전공은 행정학입니다.
점수는 82.5점입니다.
총액: 37,500원

:.1f는 실수를 소수점 첫째 자리까지, :,는 천 단위 쉼표를 표시합니다.

1.7 여러 변수로 행사 예산 계산하기

여러 값을 변수에 저장하고 사칙연산을 이어서 적용하면 실제 상황을 계산할 수 있습니다. 동아리 행사의 수입과 지출을 정산해 봅니다.

members = 12          # 참가 인원
fee = 15000           # 1인당 회비
rental_cost = 80000   # 장소 대여비
snack_cost = 46000    # 간식비

income = members * fee              # 전체 수입
expense = rental_cost + snack_cost  # 전체 지출
balance = income - expense          # 남는 예산
refund = balance / members          # 1인당 환급액

print("전체 수입:", income, "원")
print("전체 지출:", expense, "원")
print("남는 예산:", balance, "원")
print("1인당 환급액:", refund, "원")
전체 수입: 180000 원
전체 지출: 126000 원
남는 예산: 54000 원
1인당 환급액: 4500.0 원

수입은 곱셈, 지출은 덧셈, 남는 예산은 뺄셈, 환급액은 나눗셈으로 구했습니다. 계산 결과를 다시 변수에 저장하면 다음 계산에 이어서 사용할 수 있습니다.

1.8 실습 문제

1. 학생 정보 카드 만들기

학생 정보를 자료형에 맞게 저장하고 확인하는 프로그램을 작성하세요.

  • 변수 이름은 이름 name, 학번 student_id, 평균 점수 average_score, 과제 제출 여부 submitted를 사용합니다.
  • namestudent_id는 문자열, average_score는 실수, submitted는 불리언으로 저장합니다.
  • student_id는 앞자리의 0이 유지되도록 문자열로 저장합니다.
  • 각 값과 자료형을 print()type()으로 출력합니다.
  • 마지막에 f-string으로 이름·학번·평균 점수를 한 문장으로 출력합니다.

2. 주문 금액 계산기 만들기

상품 정보를 입력받아 결제 금액을 계산하는 프로그램을 작성하세요.

  • 변수 이름은 상품명 product_name, 가격 price, 수량 quantity, 상품 금액 subtotal, 배송비 delivery_fee, 최종 금액 total_price를 사용합니다.
  • product_name은 문자열, pricequantity는 정수로 입력받습니다.
  • subtotalprice * quantity, total_pricesubtotal에 배송비 3000원을 더해 계산합니다.
  • 상품명·상품 금액·최종 금액을 f-string으로 출력하고, 금액에는 천 단위 쉼표를 표시합니다.

3. 오류가 있는 주문 계산기 고치기

다음 코드에는 오류가 여러 개 있습니다. 모두 고쳐 주문 금액이 바르게 나오도록 완성하세요.

product_name = input("상품명: ")
unit_price = input("상품 가격: ")
quantity = int("수량을 입력하세요")

subtotal = unit_prce * quantity
total_price = subtotal + 3000

print("상품: " + product_name)
print("상품 금액: " + subtotal)
print(f"최종 결제 금액: {total_price:,}원)
  • 상품 가격과 수량을 실행 중에 입력받아 정수로 변환합니다.
  • 잘못 쓴 변수 이름을 고칩니다.
  • 문자열과 숫자를 안전하게 함께 출력합니다.
  • 닫히지 않은 따옴표를 고칩니다.
  • 상품 금액과 최종 금액에 천 단위 쉼표를 표시합니다.
  • 고친 오류가 NameError, TypeError, ValueError, SyntaxError 중 무엇인지 각각 설명합니다.