본문 바로가기
● 알고리즘, 자료구조/2021 알고리즘

고급단어장 | 랜덤 영단어 맞추기

by 0ver-grow 2021. 6. 3.
반응형

한글 뜻에 해당되는 영어단어 입력하기

 

과정1

일단 텍스트 문장을 영단어와 한글(뜻)으로 분리 시키자.

with open('vocabulary3.txt') as f :
    for i in f :
        data = i.strip().split(": ")  # : 을 기준으로 인덱스를 나눔
        eng,kor = data[0],data[1]

과정2

각 변수에 영단어, 한글을 각각 분리해서 담았지만

변수를 출력시키면 모든 영단어 혹은 모든 한글이 출력되는데

이를 어떻게 하면 각자 출력되도록 할 수 있을까?

key와 value를 지닌 사전을 이용하자.

입력된 key와 이에 맞는 value를 비교할 수 있도록.

즉, key는 eng이고, value는 kor변수를 담아야 해.

# str을 dict으로 만들기
vocab = {}  # dict

with open('vocabulary3.txt') as f :
    for i in f :
        data = i.strip().split(": ")  # : 을 기준으로 인덱스를 나눔
        eng,kor = data[0],data[1]
        vocab[eng] = kor

과정3

어떻게 랜덤 단어를 받을까?

random.shuffle을 써보자

그런데 shuffle은 오류가 뜬다.

'str' object does not support item assignment

 

잠깐

영어단어와 뜻은 인덱스로 정답유무를 비교한다.

그럼 인덱스를 랜덤으로 받으면 되겠네.

random.randint을 쓰자.

random.randint(시작,끝) 형태.

 

while True:
    # 랜덤한 문제 받아오기
    keys = list(vocab.keys())  # 왜 dict type에서 list로 바꾸는 걸까? 
    index = random.randint(0, len(keys) - 1)
    eng = keys[index]
    kor = vocab[eng]

 

 

전체 정리

 

# str을 dict으로 만들기
vocab = {}  # dict

with open('vocabulary3.txt') as f :
    for i in f :
        data = i.strip().split(": ")  # : 을 기준으로 인덱스를 나눔
        eng,kor = data[0],data[1]
        vocab[eng] = kor

while True:
    # 랜덤한 문제 받아오기
    keys = list(vocab.keys())  # 왜 dict type에서 list로 바꾸는 걸까? 
    index = random.randint(0, len(keys) - 1)
    eng = keys[index]
    kor = vocab[eng]
    
    # 유저 입력값 받기
    # 출력되는 형태 '한글뜻 : '
    guess = input("{}: ".format(korean_word))
    
    # 프로그램 끝내기
    # q 입력시 끝내기
    if guess == 'q':
        break
    
    # 정답 확인하기
    if guess == eng:
        print("정답입니다!\n")
    else:
        print("아쉽습니다. 정답은 {}입니다.\n".format(eng))
반응형