본문 바로가기

코드잇

[코드잇] 단어장 만들기>단어 퀴즈>고급 단어장

1. 단어장 만들기

영어 강사 Coy는 학생들의 단어 암기를 위해 단어장 프로그램을 만들려고 합니다.

이 프로그램은 콘솔로 영어 단어와 한국어 뜻을 받고, vocabulary.txt라는 새로운 텍스트 파일에 단어와 뜻을 정리하는데요. 사용자가 새로운 단어와 뜻을 입력할 때마다 vocabulary.txt에 작성되는 것입니다.

사용자는 반복적으로 단어와 뜻을 입력하는데, 단어나 뜻으로 q를 입력하는 순간 프로그램은 즉시 종료됩니다. 사용자가 q를 입력하고 나면 파일은 더 이상 바뀌지 않아야 합니다.


#답안 1#
vocabulary = {}
while True:    
    eng_word = input("영어 단어를 입력하세요: ")
    if eng_word == 'q':
        break
    ko_word = input("한국어 뜻을 입력하세요: ")
    if ko_word == 'q':
        break
    vocabulary[eng_word] = ko_word


for i,j in vocabulary.items():
     print(i,": ",j)

#답안 2#
with open('vocabulary.txt', 'w') as f:
    vocabulary = {}
    while True:    
        eng_word = input("영어 단어를 입력하세요: ")
        if eng_word == 'q':
            break
        ko_word = input("한국어 뜻을 입력하세요: ")
        if ko_word == 'q':
            break
        vocabulary[eng_word] = ko_word


    for i,j in vocabulary.items():
         print(i,": ",j)

2. 단어 퀴즈

앞선 실습 과제에서 vocabulary.txt라는 파일을 만들었죠? 이 파일에는 우리가 암기하고 싶은 단어들이 정리되어 있는데요. 이번에는 이 파일의 단어들을 가지고 학생들에게 문제를 내 주는 프로그램을 만들려고 합니다.

프로그램은 콘솔에 한국어 뜻을 알려 줄 것이고, 사용자는 그에 맞는 영어 단어를 입력해야 합니다. 사용자가 입력한 영어 단어가 정답이면 "맞았습니다!"라고 출력하고, 틀리면 "아쉽습니다. 정답은 OOO입니다."가 출력되어야 합니다.

문제를 내는 순서는 vocabulary.txt에 정리된 순서입니다.


with open('vocabulary.txt', 'r') as f:    
    for i,j in vocabulary.items():
        ans = input(f"{j}:")
        if i == ans:
            print("맞습니다!")
        else:
            print(f"아쉽습니다. 정답은 {i}입니다.")


3. 고급 단어장

지난 실습 과제에서 단어장 퀴즈 프로그램을 만들었는데요. 학생들이 문제의 순서가 매번 똑같아서 재미가 없다고 합니다.

이번에는 random 모듈과 사전(dictionary)을 이용해서 vocabulary.txt의 단어들을 랜덤한 순서로 내도록 프로그램을 바꿔 보세요.

같은 단어를 여러번 물어봐도 괜찮고, 프로그램은 사용자가 알파벳 q를 입력할 때까지 계속 실행됩니다.


import random

with open('vocabulary.txt', 'r') as f:
    new_voca = {}  #퀴즈를 위한 새로운 딕셔너리 생성
    for k,v in vocabulary.items():
        new_key = v  #고양이=key
        new_value = k
        new_voca[new_key] = new_value

    que_list = list(vocabulary.values())  #퀴즈 리스트 생성
    random.shuffle(que_list)  #랜덤
    
    for kor in que_list:  #kor=고양이 = new_voca의 key 
        input_ans = input(f"{kor}: ") 
        answer = new_voca[kor]  #ans = new_voca의 value
        if input_ans == "q":
            break
        
        if input_ans == answer:  #vocabulary[ans] < value
            print("맞았습니다!")
        else:
            print(f"틀렸습니다. 정답은 {answer}입니다.")
        print()
## 모범 답안##

import random

# 사전 만들기
vocab = {}
with open('vocabulary.txt', 'r') as f:
    for line in f:
        data = line.strip().split(": ")
        english_word, korean_word = data[0], data[1]
        vocab[english_word] = korean_word

# 문제 내기
while True:
    # 랜덤한 문제 받아오기
    keys = list(vocab.keys())
    index = random.randint(0, len(keys) - 1)
    english_word = keys[index]
    korean_word = vocab[english_word]
    
    # 유저 입력값 받기
    guess = input("{}: ".format(korean_word))
    
    # 프로그램 끝내기
    if guess == 'q':
        break
    
    # 정답 확인하기
    if guess == english_word:
        print("정답입니다!\n")
    else:
        print("아쉽습니다. 정답은 {}입니다.\n".format(english_word))

'코드잇' 카테고리의 다른 글

[코드잇] 숫자 야구  (0) 2021.02.01
[코드잇] 로또 시뮬레이션  (0) 2021.02.01
[코드잇] 코딩에 빠진 닭  (0) 2021.01.27
[코드잇] 숫자 맞히기 게임  (0) 2021.01.27
[코드잇] 온도 단위 바꾸기  (0) 2021.01.21