강의자료 · 머신러닝의 이해

[4주차] 살아 움직이는 데이터: 제어문과 함수 👨‍💻

안녕하세요! 4주차 수업에 오신 것을 환영합니다.

지난 시간에는 파이썬의 변수와 자료구조를 이용해 데이터를 ’저장’하는 법을 배웠습니다.

오늘은 여기서 한 단계 더 나아가, 저장된 데이터를 ’처리’하고 ’조작’하는 방법을 배우겠습니다.

조건문(if) 을 이용해 특정 조건의 데이터를 골라내고,

반복문(for) 으로 수백, 수만 개의 데이터를 한 번에 처리하며,

이 모든 과정을 함수(def) 라는 재사용 가능한 부품으로 만드는 방법을 알아봅니다.

🚦 모듈 1: 조건을 따라 움직이는 코드, 조건문(if)

# 영화 평점에 따라 추천 여부를 결정하는 예제
movie_rating = 9.1

# '만약' movie_rating이 9.0보다 크거나 같으면
if movie_rating >= 9.0:
    print("✨ 강력 추천하는 영화입니다!")
# '그렇지 않으면'
else:
    print("볼만한 영화입니다.")
✨ 강력 추천하는 영화입니다!
# 영화 평점에 따라 추천 여부를 결정하는 예제
movie_rating = 8.5

# '만약' movie_rating이 9.0보다 크거나 같으면
if movie_rating >= 9.0:
    print("✨ 강력 추천하는 영화입니다!")
# '그렇지 않으면'
else:
    print("볼만한 영화입니다.")

# movie_rating 값을 8.5로 바꾸고 다시 실행해보세요!
볼만한 영화입니다.
# 조금 더 세분화된 추천 시스템
movie_rating = 8.8

if movie_rating >= 9.0:
    print("✨ 강력 추천! (9.0점 이상)")
# '그렇지 않고 만약' 8.5점 이상이면
elif movie_rating >= 8.5:
    print("👍 추천! (8.5점 이상)")
# '그 외 모든 경우'
else:
    print("🤔 보통. (8.5점 미만)")
👍 추천! (8.5점 이상)

🔁 모듈 2: 모든 데이터를 한 번에! 반복문(for)

# 3주차에 만들었던 영화 데이터셋
my_movie_dataset = [
    { "title": "인셉션",
     "director": "크리스토퍼 놀란",
      "rating": 9.29 },
    { "title": "기생충",
     "director": "봉준호",
      "rating": 9.07 },
    { "title": "어바웃 타임",
     "director": "리차드 커티스",
      "rating": 9.27 }
]

# 데이터셋(리스트)에서 영화 정보(딕셔너리)를 하나씩 꺼내 movie라는 변수에 담아 반복
print("--- 모든 영화 제목 출력 ---")
for movie in my_movie_dataset:
    # 각 영화(딕셔너리)에서 'title' 키의 값을 꺼내 출력
    print(movie['title'])
--- 모든 영화 제목 출력 ---
인셉션
기생충
어바웃 타임
# 반복문과 조건문을 함께 사용하여 '평점 9.2 이상인 영화'만 골라내기

print("\n--- 평점 9.2 이상인 추천 영화 ---")
for movie in my_movie_dataset:
    # '만약' 현재 영화의 평점이 9.2보다 크거나 같으면
    if movie['rating'] >= 9.2:
        # 해당 영화의 제목과 평점을 출력
        print(f"제목: {movie['title']}, 평점: {movie['rating']}")
--- 평점 9.2 이상인 추천 영화 ---
제목: 인셉션, 평점: 9.29
제목: 어바웃 타임, 평점: 9.27

⚙️ 모듈 3: 나만의 코드 부품, 함수(def)

# 두 숫자를 더하는 간단한 함수
def add_numbers(x, y):
    """
    이 함수는 두 개의 숫자 x와 y를 입력받아,
    그 합을 계산하여 결과값으로 돌려줍니다.
    """
    result = x + y
    return result

# 함수 호출 (사용)
sum_result = add_numbers(5, 3)
print(f"5와 3의 합은? {sum_result}")

another_sum = add_numbers(100, 200)
print(f"100과 200의 합은? {another_sum}")
5와 3의 합은? 8
100과 200의 합은? 300
# 모듈 2에서 했던 '평점 기반 영화 추천' 로직을 함수로 만들어 봅시다.

def recommend_movies(dataset, min_rating):
    """
    영화 데이터셋과 최소 평점을 입력받아,
    조건에 맞는 영화 제목 리스트를 결과로 돌려줍니다.
    """
    recommended_list = [] # 추천 목록을 담을 빈 리스트
    for movie in dataset:
        if movie['rating'] >= min_rating:
            recommended_list.append(movie['title']) # 리스트에 추가
    return recommended_list


# 함수를 이용해 평점 9.0 이상 영화 추천받기
my_best_movies = recommend_movies(my_movie_dataset, 9.0)
print(f"평점 9.0 이상 추천 영화: {my_best_movies}")

# 같은 함수를 재사용해서 평점 9.1 이상 영화 추천받기
my_good_movies = recommend_movies(my_movie_dataset, 9.1)
print(f"평점 9.1 이상 추천 영화: {my_good_movies}")
평점 9.0 이상 추천 영화: ['인셉션', '기생충', '어바웃 타임']
평점 9.1 이상 추천 영화: ['인셉션', '어바웃 타임']