[Python]_단어장 랜덤하게 계속 나오게 하기

hanseungjune·2022년 6월 13일
0

Python

목록 보기
29/38


풀이

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
    # print(vocab)
# 목록 가져오기
keys = list(vocab.keys())
# print(keys)

# 문제 내기
while True:
    # 랜덤한 문제 받아오기
    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))

오답문제 : 알고리즘을 하는 것에 대해서 나의 가장 문제점은 작업 분할을 하지 않는다는 것이다. 일단 사전을 객체 형태로 따로 정리를 하고, keys 값이나 values 값을 따로 빼두는 행위를 했어야 했다.

그리고 random을 index로 사용해야겠다는 생각을 했지만 방법이 잘못되었다. keys 값을 따로 빼둔 배열에 인덱스를 넣어서 객체의 key 값에 대입을 했어야 했고, values 값을 설정했어야 했다. 근데 그러질 못했다.

그리고 입력값을 받을 때 그냥 korean: 을 할게 아니고 "".format()을 설정하여 더 깔끔하게 보이는게 좋은 것 같다.

그 다음에 출력하고 break 하는 것은 이전과 동일해서 어렵지 않았다.

작업 분할 좀 하자! 정리하고(딕셔너리 형태로) 랜덤값 주고(배열의 인덱스로) 그리고 조건문으로 출력!

profile
필요하다면 공부하는 개발자, 한승준

3개의 댓글

comment-user-thumbnail
2022년 7월 25일

랜덤 모듈은 따로 다운로드 받아야 하나요?

답글 달기
comment-user-thumbnail
2022년 7월 25일

다 똑같은데 random 범위가 비어있다고 뜨네요

1개의 답글