← 파이썬 강의 목록으로
📚
실습 프로젝트 (Practice) · ★★
양방향 + 복습 모드

Lv2 · 단어장 퀴즈

영-한 사전으로 랜덤 퀴즈. 영→한, 한→영, 랜덤 모드와 틀린 문제만 복습하는 모드까지 구현합니다.

dictrandom퀴즈
소요 시간
2~3시간
난이도
📊 자료구조 활용
선수 조건
🎯 기초 7-8주차 + random
결과물
딕셔너리 양방향 활용

이 강의에서 배우는 것

  • 1단어장 dict 에서 랜덤 표본을 뽑는다
  • 2영→한, 한→영, 랜덤 모드를 구현한다
  • 3틀린 문제만 복습 모드로 다시 푼다

프로젝트 개요

  • 단어장 dict (10개 이상)
  • 모드 선택: 영→한 / 한→영 / 랜덤
  • 10문제 출제 후 점수 + 틀린 단어 + 복습 옵션

요구사항

  • random.sample 로 중복 없이 출제
  • 즉시 정답/오답 피드백
  • 복습 모드: 틀린 문제만 다시

도전 과제

  • 단어장 외부 파일 로드
  • 정답률 단어별 누적

채점 체크리스트

  • 3가지 모드
  • 복습 모드
  • 점수 정확

💻 예제 (examples)

실제로 실행해 결과를 확인할 수 있는 예제 코드입니다.

solution.py전체 동작 코드
CODE
"""단어장 퀴즈 — 양방향 + 복습 모드"""
import random

WORDS = {
    "apple": "사과", "book": "책", "table": "탁자", "door": "문",
    "water": "물", "fire": "불", "tree": "나무", "sky": "하늘",
    "love": "사랑", "time": "시간", "house": "집", "car": "자동차",
}

def quiz(pairs, mode):
    score = 0
    wrong = []
    for i, (en, ko) in enumerate(pairs, 1):
        if mode == "en2ko":
            q, a = en, ko
        elif mode == "ko2en":
            q, a = ko, en
        else:  # random
            if random.random() < 0.5:
                q, a = en, ko
            else:
                q, a = ko, en
        ans = input(f"[{i}/{len(pairs)}] {q}? ").strip()
        if ans == a:
            print("✓ 정답")
            score += 1
        else:
            print(f"✗ 오답 (정답: {a})")
            wrong.append((q, a))
    return score, wrong

def main():
    print("[모드] 1.영→한 2.한→영 3.랜덤")
    mode_map = {"1": "en2ko", "2": "ko2en", "3": "random"}
    mode = mode_map.get(input("선택: ").strip(), "en2ko")

    pairs = random.sample(list(WORDS.items()), min(10, len(WORDS)))
    score, wrong = quiz(pairs, mode)
    print(f"\n총점: {score} / {len(pairs)}")

    if wrong and input("\n틀린 문제만 복습? (y/n): ").strip().lower() == "y":
        score2, _ = quiz(wrong, mode)
        print(f"복습 점수: {score2} / {len(wrong)}")

if __name__ == "__main__":
    main()
▶ 실행 결과
[모드] 1.영→한 2.한→영 3.랜덤
선택: 1
[1/10] apple? 사과
✓ 정답
...
총점: 8 / 10
틀린 문제만 복습? (y/n): y
[1/2] water? 물
✓ 정답
복습 점수: 2 / 2

📝 과제 (exercises)

직접 풀어보고, 막힐 때 정답을 펼쳐 비교해보세요.

과제 1

프로젝트 구현

목표: 위 사양대로 직접 작성한다.

요구사항
  • WORDS dict
  • quiz 함수
  • 복습 모드
💡 힌트

random.sample(list(WORDS.items()), 10)

입출력 예시
총점: 8 / 10
채점
  • · 3가지 모드
  • · 복습
정답 코드 펼치기 / 접기
SOLUTION
# 위 solution.py 와 동일
▶ 실행 결과
(예제 참고)
예제 코드 / 강의 자료

전체 강의 자료와 예제 코드는 GitHub에서 자유롭게 받아볼 수 있습니다.

GitHub에서 보기 ↗