본문으로 건너뛰기

Python 시작하기

파이썬 실습 환경 구축하기

우선, 이번 강의 시간 동안 사용할 실습 폴더를 생성합니다. 강의에서는 example이라는 이름의 폴더를 생성하여 사용하겠습니다. VSCode 좌측 상단 메뉴의 파일 >> 폴더 열기 버튼을 눌러 example 폴더를 탐색기에 열어둡니다.

VSCode 폴더 열기

아직 파일을 생성하지 않았기 때문에 빈 폴더를 확인할 수 있습니다. 탐색기의 비어있는 영역을 우클릭하거나 새 파일 아이콘을 눌러 새로운 파일을 생성할 수 있습니다.

파이썬 시작하기

파이썬 파일은 .py 확장자를 사용합니다. 첫 예제를 실행하기 위해 ex1.py라는 이름의 파일을 만들고 아래 코드를 작성합니다.

ex1.py
print("Hello World")

코드는 Ctrl + S 키를 눌러서 저장할 수 있습니다. VSCode에서 파일명 옆에 점이 있다면 파일이 저장되지 않았다는 뜻이니 코드를 실행하기 전에 반드시 저장해야 합니다.

저장 X

저장 X

저장 O

저장 O

파일은 F5 또는 실행 버튼을 눌러서 실행할 수 있습니다. 실행된 결과는 터미널 창에 출력됩니다.

파이썬 기초 문법

주석

주석은 코드 안에 메모를 남기기 위해 사용하는 문구로, 프로그램 실행에는 아무런 영향을 주지 않는 부분입니다. 주석은 주로 코드의 목적, 동작 방식, 작성자 메모 등을 적어서 다른 사람이나 미래의 자신이 코드를 더 쉽게 이해할 수 있도록 도와줍니다.

파이썬에서는 # 기호를 사용해서 한 줄 주석을 작성합니다. # 뒤에 적힌 내용은 모두 주석으로 처리됩니다.

ex1.py
# 이렇게 작성된 주석은 프로그램 실행에 아무런 영향을 미치지 않습니다.
print("Hello World")

변수

변수는 프로그래밍에서 데이터를 저장하는 메모리 공간의 이름을 말합니다. 쉽게 설명하면 값을 저장할 수 있는 상자에 붙인 이름표라고 생각할 수 있습니다. 변수를 사용하면 하나하나의 값들이 무엇을 의미하는지 직관적으로 이해하기 쉬울뿐더러, 이 값을 저장해두고 여러 번 재활용할 수 있습니다.

예를 들어, 카페 메뉴판의 음료 가격을 변수로 옮겨보겠습니다.

[메카커피 메뉴판]
아메리카노 2,000원
카페라떼 2,900원
바닐라라떼 3,400원
초코라떼 3,500원
레몬차 3,300원
ex2.py
# 메카커피 메뉴판
americano = 2000
cafelatte = 2900
vanillalatte = 3400
chocolatte = 3500
lemontea = 3300

예시처럼 파이썬에서는 변수명 = 값의 형태로 변수를 만들 수 있습니다.

프로그래밍에서의 등호

프로그래밍에서 사용하는 등호(=)는 수학에서의 등호와 의미가 다릅니다. 수학에서 등호는 양쪽이 서로 같다는 관계를 나타냅니다. 예를 들어 3 + 2 = 5는 항상 참인 사실을 표현합니다. 하지만 프로그래밍에서 등호는 값을 저장하거나 할당하는 역할을 합니다. 예를 들어 x = 5라고 하면, 수학에서는 x와 5가 같다는 의미지만, 프로그래밍에서는 변수 x에 5라는 값을 넣으라는 명령입니다. 즉, 등호를 사용해서 변수에 값을 대입하는 것이지, 양쪽이 같다는 진리 관계를 표현하는 것이 아닙니다. 그래서 프로그래밍에서는 x = x + 1 같은 문장이 가능하며, 이는 현재 x에 저장된 값에 1을 더한 뒤 다시 x에 저장하라는 뜻입니다. 수학에서는 이런 표현이 모순이지만, 프로그래밍에서는 아주 흔하게 사용되니 혼동하지 않도록 주의해야 합니다.

자료형

자료형(데이터 타입)은 컴퓨터가 데이터를 어떤 형태로 저장하고 처리할지를 구분하는 기준입니다. 쉽게 말해, 변수나 값이 가질 수 있는 데이터의 종류라고 생각할 수 있습니다.

파이썬에서 사용하는 기본적인 자료형을 알아보겠습니다.

  • 숫자형 (int, float)
ex3-1.py
# 정수형
int1 = 123
int2 = -987
int3 = 0
print(type(int1)) # <class 'int'>
print(type(int2)) # <class 'int'>
print(type(int3)) # <class 'int'>

# 실수형
float1 = 12.3
float2 = -9.87
float3 = 0.0
print(type(float1)) # <class 'float'>
print(type(float2)) # <class 'float'>
print(type(float3)) # <class 'float'>
  • 문자열 (str)
ex3-2.py
# 문자열
str1 = "123"
str2 = "a"
str3 = """큰따옴표를 3번 사용하면
아주 긴 문자열도 만들 수 있습니다.
이렇게 띄어쓰기도 할 수 있습니다."""
print(type(str1)) # <class 'str'>
print(type(str2)) # <class 'str'>
print(type(str3)) # <class 'str'>
  • 논리형 (bool)
ex3-3.py
# 논리형
bool1 = True
bool2 = False
print(type(bool1)) # <class 'bool'>
print(type(bool2)) # <class 'bool'>
  • 리스트 (list), 튜플 (tuple), 딕셔너리 (dict), 세트 (set)
예시순서수정중복
리스트list = [item, item, item]OOO
튜플tuple = (item, item)OXO
딕셔너리dict = {key1 : value, key2 : value}XOX (value는 O)
세트set = {item1, item2, item3}XOX
ex3-4.py
# 리스트 : 여러 값을 순서대로 저장
list1 = [1, 2, 3, 4]
list2 = ["a", "b", "c", "d"]
list3 = [list1, list2]
print(type(list1)) # <class 'list'>
print(type(list2)) # <class 'list'>
print(type(list3)) # <class 'list'>

# 튜플 : 여러 값을 순서대로 저장 (수정 불가)
tuple1 = (1, 2, 3)
tuple2 = ("a", "b", "c")
tuple3 = (tuple1, tuple2)
print(type(tuple1)) # <class 'tuple'>
print(type(tuple2)) # <class 'tuple'>
print(type(tuple3)) # <class 'tuple'>

# 딕셔너리 : 키-값 쌍으로 저장
dict1 = {1: "A", 2: "B", 3: "C"}
dict2 = {"a": 1, "b": 2, "c": 3}
dict3 = {"dict1": dict1, "dict2": dict2}
print(type(dict1)) # <class 'dict'>
print(type(dict2)) # <class 'dict'>
print(type(dict3)) # <class 'dict'>

# 세트 : 순서 없이 값만 저장, 중복 제거
set1 = {1, 2, 3}
set2 = {"a", "b", "c"}
set3 = set1 | set2
print(type(set1)) # <class 'set'>
print(type(set2)) # <class 'set'>
print(type(set3)) # <class 'set'>

📢 실습

실습 안내

아래 문제는 모두 같은 practice.py 파일에 이어서 작성합니다.

  1. 메카커피의 주문자 정보를 저장해두려고 한다. 주문자 이름, 주문한 음료 리스트, 멤버십 적립 여부를 각각 문자열, 리스트(데이터는 문자열), 논리형 형태의 변수로 만들고 저장하시오.

    [메카커피 주문자 정보]
    주문자 이름 : 김민수
    주문한 음료 리스트 : 아메리카노, 바닐라라떼, 레몬차
    멤버십 적립 여부 : O
    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True
  2. 1번에 이어서 메카커피의 메뉴판과 주문자 정보를 각각 하나의 딕셔너리로 만들어서 관리하려고 한다. 메뉴판은 menu, 주문자 정보는 orders라는 이름의 딕셔너리로 각각 저장하시오. 단, menu의 키는 메뉴 이름이다.

    [메카커피 메뉴판]
    아메리카노 2,000원
    카페라떼 2,900원
    바닐라라떼 3,400원
    초코라떼 3,500원
    레몬차 3,300원
    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300
    }

    # 주문자 정보 딕셔너리
    orders = {
    "customer": customer_name,
    "items": order_items,
    "member": is_member
    }
  3. 2번에서 만든 menuorders 딕셔너리를 이용하여 주문한 음료의 합계 가격을 계산해 출력하시오.

    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300
    }

    # 주문자 정보 딕셔너리
    orders = {
    "customer": customer_name,
    "items": order_items,
    "member": is_member
    }

    # 주문한 음료 이름 꺼내기
    item1 = orders["items"][0]
    item2 = orders["items"][1]
    item3 = orders["items"][2]

    # 각 음료 가격 구하기
    price1 = menu[item1]
    price2 = menu[item2]
    price3 = menu[item3]

    # 합계 계산
    total_price = price1 + price2 + price3

    # 합계 출력
    print(total_price)
  4. 지금까지 저장된 변수들을 활용해 아래 내용을 출력하시오.

    주문자: 김민수
    주문 음료: ['아메리카노', '바닐라라떼', '레몬차']
    합계 금액: 8700원
    멤버십 회원 여부: True
    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300
    }

    # 주문자 정보 딕셔너리
    orders = {
    "customer": customer_name,
    "items": order_items,
    "member": is_member
    }

    # 주문한 음료 이름 꺼내기
    item1 = orders["items"][0]
    item2 = orders["items"][1]
    item3 = orders["items"][2]

    # 각 음료 가격 구하기
    price1 = menu[item1]
    price2 = menu[item2]
    price3 = menu[item3]

    # 합계 계산
    total_price = price1 + price2 + price3

    print("주문자:", orders["customer"])
    print("주문 음료:", orders["items"])
    print("합계 금액:", str(total_price) + "원")
    print("멤버십 회원 여부:", orders["member"])

연산자

연산자는 값과 값 사이에서 계산이나 비교를 수행하는 기호나 문법을 말합니다. 프로그래밍에서는 수학과 다른 연산자나 독특한 표현 방식도 사용되기 때문에, 혼동하지 않도록 주의해야 합니다.

  • 산술 연산자
연산자의미예시
+더하기3 + 25
-빼기5 - 14
*곱하기2 * 36
/나누기6 / 23.0
//몫만 구하기7 // 32
%나머지 구하기7 % 31
**거듭제곱2 ** 38
ex4-1.py
a = 10
b = 3

print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
print(a / b) # 3.333...
print(a // b) # 3
print(a % b) # 1
print(a ** b) # 1000
  • 비교 연산자
연산자의미예시
==같다3 == 3True
!=같지 않다3 != 4True
>크다5 > 2True
<작다2 < 5True
>=크거나 같다3 >= 3True
<=작거나 같다2 <= 3True
ex4-2.py
x = 5
y = 10

print(x == y) # False
print(x != y) # True
print(x > y) # False
print(x < y) # True
print(x >= 5) # True
print(x <= 4) # False
  • 논리 연산자
연산자의미예시
and그리고True and FalseFalse
or또는True or FalseTrue
not아니다(반대)not TrueFalse
ex4-3.py
a = True
b = False

print(a and b) # False
print(a or b) # True
print(not a) # False
  • 대입 연산자
연산자의미예시
=대입x = 5
+=더해서 대입x += 3 (x = x+3)
-=빼서 대입x -= 2 (x = x-2)
*=곱해서 대입x *= 4 (x = x*4)
/=나눠서 대입x /= 2 (x = x/2)
ex4-4.py
x = 10
x += 5 # x = 15
x *= 2 # x = 30
print(x) # 30

📢 실습

실습 안내

아래 문제는 모두 같은 practice.py 파일에 이어서 작성합니다.

  1. 메카커피에서 5% 할인 이벤트를 진행하려고 한다. 합계 금액에서 5%를 할인한 금액을 출력하시오.

    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300
    }

    # 주문자 정보 딕셔너리
    orders = {
    "customer": customer_name,
    "items": order_items,
    "member": is_member
    }

    # 주문한 음료 이름 꺼내기
    item1 = orders["items"][0]
    item2 = orders["items"][1]
    item3 = orders["items"][2]

    # 각 음료 가격 구하기
    price1 = menu[item1]
    price2 = menu[item2]
    price3 = menu[item3]

    # 합계 계산
    total_price = price1 + price2 + price3

    discount = total_price * 0.05
    final_price = total_price - discount

    print("할인 후 금액:", final_price)
  2. 메카커피에서 10,000원 이상 구매 시 쿠키를 나눠주는 이벤트를 진행하려고 한다. 할인 후 금액이 10,000원 이상인지 비교하여 True 또는 False로 출력하시오.

    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300
    }

    # 주문자 정보 딕셔너리
    orders = {
    "customer": customer_name,
    "items": order_items,
    "member": is_member
    }

    # 주문한 음료 이름 꺼내기
    item1 = orders["items"][0]
    item2 = orders["items"][1]
    item3 = orders["items"][2]

    # 각 음료 가격 구하기
    price1 = menu[item1]
    price2 = menu[item2]
    price3 = menu[item3]

    # 합계 계산
    total_price = price1 + price2 + price3

    discount = total_price * 0.05
    final_price = total_price - discount

    result = final_price >= 10000
    print(result)

제어 구조

조건문

조건문은 어떤 조건에 따라 코드의 실행 여부를 결정하는 문법을 말합니다. 쉽게 이야기하면 특정 조건을 만족하면 이 코드를 실행한다고 판단하는 역할을 합니다. 파이썬에서는 if, elif, else를 사용해 조건문을 작성하며, 조건에 맞으면 해당 블록이 실행되고, 맞지 않으면 건너뜁니다. 프로그래밍에서는 여러 조건을 동시에 검사하거나 순서대로 비교할 수 있기 때문에, 조건문을 통해 프로그램의 흐름을 유연하게 제어할 수 있습니다.

ex5.py
age = 17

if age >= 20:
print("성인입니다.")
elif age >= 13:
print("청소년입니다.")
else:
print("어린이입니다.")

반복문

반복문은 같은 코드를 여러 번 반복해서 실행하는 문법을 말합니다. 예를 들어 목록의 여러 데이터를 하나씩 처리하거나, 일정 횟수만큼 같은 동작을 되풀이할 때 사용합니다. 파이썬에서는 for문과 while문이 대표적인 반복문이며, 각각 정해진 횟수만큼 반복하거나 조건이 참인 동안 반복합니다. 반복문을 활용하면 코드를 간결하게 줄일 수 있고, 자동으로 많은 작업을 처리할 수 있습니다.

  • for 반복문
ex6-1.py
for i in range(10):
print(i)

# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9

fruits = ["사과", "바나나", "포도"]

for fruit in fruits:
print("과일:", fruit)
# 사과
# 바나나
# 포도
  • while 반복문
ex6-2.py
cnt = 0
while cnt < 5:
print(cnt)
cnt += 1

# 0
# 1
# 2
# 3
# 4

📢 실습

실습 안내

아래 문제는 모두 같은 practice.py 파일에 이어서 작성합니다.

  1. 메카커피에서 멤버십 회원들을 대상으로 500원 할인 이벤트를 진행하려 한다. 멤버십 회원 여부를 확인하여, 회원이라면 합계 금액에서 500원을 할인한 금액을 출력하고, 그렇지 않다면 원래 금액을 출력하시오.

    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300,
    }

    # 주문자 정보 딕셔너리
    orders = {"customer": customer_name, "items": order_items, "member": is_member}

    # 주문한 음료 이름 꺼내기
    item1 = orders["items"][0]
    item2 = orders["items"][1]
    item3 = orders["items"][2]

    # 각 음료 가격 구하기
    price1 = menu[item1]
    price2 = menu[item2]
    price3 = menu[item3]

    # 합계 계산
    total_price = price1 + price2 + price3

    # 멤버십 할인 적용
    if orders["member"]:
    final_price = total_price - 500
    else:
    final_price = total_price

    # 출력
    print("할인 전 금액:", str(total_price) + "원")
    print("할인 후 금액:", str(final_price) + "원")
  2. 메카커피에 주문한 음료 리스트를 반복문을 활용하여 하나씩 출력하시오.

    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300,
    }

    # 주문자 정보 딕셔너리
    orders = {"customer": customer_name, "items": order_items, "member": is_member}

    # 반복문으로 출력
    for item in orders["items"]:
    print("주문 음료:", item)
  3. 메카커피의 주문 정보를 이용하여 아래와 같은 영수증을 출력하시오. 단, 아래의 조건을 만족해야 한다.

    1. 반복문을 이용하여 주문한 음료를 모두 출력한다.
    2. 주문한 음료의 총 금액을 계산한다.
    3. 멤버십 회원이라면 총 금액에서 500원을 할인한다.

    출력 예시

    ========== 영수증 ==========
    주문자: 김민수

    주문 메뉴
    - 아메리카노
    - 바닐라라떼
    - 레몬차

    총 금액: 8700원
    회원 할인: 500원
    결제 금액: 8200원
    ==========================
    정답 예시
    practice.py
    # 주문자 이름
    customer_name = "김민수"

    # 주문한 음료 리스트
    order_items = ["아메리카노", "바닐라라떼", "레몬차"]

    # 멤버십 적립 여부
    is_member = True

    # 메뉴판 딕셔너리
    menu = {
    "아메리카노": 2000,
    "카페라떼": 2900,
    "바닐라라떼": 3400,
    "초코라떼": 3500,
    "레몬차": 3300,
    }

    # 주문자 정보 딕셔너리
    orders = {"customer": customer_name, "items": order_items, "member": is_member}

    # 총 금액 계산
    total_price = 0
    for item in orders["items"]:
    total_price += menu[item]

    # 멤버십 할인 적용
    if orders["member"]:
    discount = 500
    else:
    discount = 0

    final_price = total_price - discount

    # 영수증 출력
    print("========== 영수증 ==========")
    print("주문자:", orders["customer"])
    print()
    print("주문 메뉴")
    for item in orders["items"]:
    print("-", item)
    print()
    print("총 금액:", str(total_price) + "원")
    print("회원 할인:", str(discount) + "원")
    print("결제 금액:", str(final_price) + "원")
    print("==========================")