1. 사용자 입력을 받는 단어 연습장(txt 파일)

# 사용자 입력을 받는 단어장
with open('../data/vocabulary.txt', 'w') as f:
    while True:
        eng_word = input("영어 단어를 입력하세요: ")  # 영어 단어 입력
        if eng_word == "q":
            break

        meaning = input("한국어 뜻을 입력하세요: ")  # 한국어 뜻 입력
        if meaning == "q":
            break

        f.write(f"{eng_word}: {meaning}\n")  # vocabulary.txt 파일에 값 입력

 

영어 단어나 한국어 뜻을 입력하는 과정에서 q를 입력하면 프로그램이 종료되도록 만들었다.

 

 

2. 단어 시험 프로그램 (based on vocabulary.txt)

 

먼저 1번 실습에서 만든 단어 연습장(vocabulary.txt)에 다음 단어들을 삽입한다.

cat: 고양이
apple: 사과
church: 교회
temple: 절
wallet: 지갑
backpack: 책가방
soap: 비누
bicycle: 자전거

 

이제 만들어진 단어장을 활용하여 단어 문제를 제출하는 프로그램을 코딩해 보자.

with open("../data/vocabulary.txt", 'r', encoding='UTF-8') as f:
    for line in f:
        vocab = line.split(": ")
        question = vocab[0]
        answer = vocab[1].strip()

        # 입력값 받기
        guess = input(f"{question}: ")

        # 정답 판별
        if guess == answer:
            print("맞았습니다!\n")
        else:
            print(f"아쉽습니다. 정답은 {answer}입니다.\n")

 

모든 단어를 텍스트 파일에서 차례대로 추출하여 영어 단어를 문제로 제시하고, 정답을 판별하여 안내하는 프로그램을 완성했다. 영단어와 한국어 뜻 두 개의 문자열로 된 리스트를 변수로 받아 이를 다른 변수에 분리하여 코딩했다.

 

 

3. 랜덤한 단어 문제 시험

import random

with open("../data/vocabulary.txt", "r", encoding="UTF-8") as f:
    # 사전 제작
    vocab = {}  # 단어들이 저장되는 사전

    for line in f:
        data = line.strip().split(": ")
        eng_word, kor_word = data[0], data[1]
        vocab[eng_word] = kor_word

    keys = list(vocab.keys())

    # 문제 제출
    while True:
        # 랜덤한 문제 생성
        rand_num = random.randint(0, len(keys) - 1)
        english_word = keys[rand_num]
        kor_word = vocab[english_word]

        # 유저 입력값 받기
        guess = input(f"{kor_word}: ")

        # 정답 확인
        if guess == english_word:
            print("맞았습니다!")
        elif guess == "q":  # 유저가 q 입력시 즉시 종료
            break
        else:
            print(f"틀렸습니다. 정답은 {english_word}입니다.")

 

저장된 단어 사전에서 랜덤하게 문제를 뽑기 위해 별도로 사전형 변수를 생성하고, 랜덤 모듈을 활용해 매번 다른 문제가 출제되도록 프로그램을 만들었다. 이번에도 반복문의 종료 시점을 정하기 위해 입력자가 q를 입력할 시에 즉시 프로그램이 종료되도록 만들었다.

 

random 모듈에서 무작위 정수를 받아와서 어떻게 단어를 선택하게 할까에 대해서 고민하느라 헤맸다. 결국 사전형을 키값과 가치값의 리스트 형태로 분류하여 순번을 무작위로 뽑는 방법을 활용하여 해결할 수 있었다.

 

문제 해결을 위해서 컴퓨터적 사고방식을 기르기 위해서는 직관적으로 필요한 기능을 바로 입력하기 보다는 처리해야 하는 단계를 나누고, 알맞은 변수를 최적의 방법으로 생성해서 차근차근 구현하는 과정이 필요하다는 것을 깨달았다.

'IT Self-study > Python' 카테고리의 다른 글

파이썬 기초: 파일 읽고 쓰기  (0) 2025.04.17
랜덤 숫자 맞추기 프로그램  (0) 2025.04.11
파이썬 기초: 모듈  (0) 2025.04.11
파이썬 기초: 특별한 자료형의 특징  (0) 2025.04.06
파이썬 기초: 사전  (0) 2025.04.05