실습과제
앞선 실습 과제에서 vocabulary.txt라는 파일을 만들었죠? 이 파일에는 우리가 암기하고 싶은 단어들이 정리되어 있는데요. 이번에는 이 파일의 단어들을 가지고 학생들에게 문제를 내 주는 프로그램을 만들려고 합니다.
프로그램은 콘솔에 한국어 뜻을 알려 줄 것이고, 사용자는 그에 맞는 영어 단어를 입력해야 합니다. 사용자가 입력한 영어 단어가 정답이면 "맞았습니다!"라고 출력하고, 틀리면 "아쉽습니다. 정답은 OOO입니다."가 출력되어야 합니다.
문제를 내는 순서는 vocabulary.txt에 정리된 순서입니다.
프로그램 예시 동작
고양이: cat
맞았습니다!
사과: fruit
아쉽습니다. 정답은 apple입니다.
교회: church
맞았습니다!
절: tample
아쉽습니다. 정답은 temple입니다.
지갑: wallet
맞았습니다!
책가방: bag
아쉽습니다. 정답은 backpack입니다.
비누: soap
맞았습니다!
자전거: bycicle
아쉽습니다. 정답은 bicycle입니다.
셀프 채점
다음 항목들이 제대로 구현되었는지 확인해 보세요!
vocabulary.txt 파일에 있는 단어를 하나씩 순서대로 불러와서 퀴즈를 낸다.
정답을 맞추면 "맞았습니다!", 틀리면 "아쉽습니다. 정답은 *입니다"가 출력된다.
vocabulary.txt 파일에 있는 단어 수가 달라져도 코드가 잘 작동한다.
힌트5/5
과제 해설
영어 단어와 한국어 뜻 받아오기
파일을 읽기 위해서는 먼저 파일을 열어야겠죠?
with open('vocabulary.txt', 'r') as f:
이렇게 하면 vocabulary.txt라는 파일을 열고, 그 파일에 읽을 수 있습니다.
이제 파일을 한 줄씩 순서대로 읽어야 하는데요. for문을 사용하면 되겠죠?
for line in f:
for문의 수행 부분에는 어떤 코드가 들어가야 할까요?
먼저 각 줄(line)의 영어 단어와 한국어 뜻을 각각 어떻게 받아올 수 있을지 생각해 봅시다.
두 단계를 거쳐 할 수 있는데요.
- strip을 이용해서 line에서 "\n"을 없앤다.
- split을 이용해서 영어 단어와 한국어 뜻 나눈다.
코드로 작성하면 이렇습니다.
data = line.strip().split(": ")
그러면 data 리스트의 0번 인덱스에는 영어 단어가 들어가고, 1번 인덱스에는 한국어 뜻이 들어가는 거죠. 깔끔한 코드를 위해, 각각 변수에 지정하겠습니다.
english_word, korean_word = data[0], data[1]
문제 내기
이제 사용자에게 문제를 내고, 답을 입력받으면 됩니다.
guess = input("{}: ".format(korean_word))
그 후에는 답이 맞았는지 틀렸는지 알려 주는 코드만 쓰면 되는데요. 이렇게 할 수 있습니다.
if guess == english_word:
print("정답입니다!\n")
else:
print("아쉽습니다. 정답은 {}입니다.\n".format(english_word))
모범 답안
with open('vocabulary.txt', 'r') as f:
for line in f:
data = line.strip().split(": ")
english_word, korean_word = data[0], data[1]
# 유저 입력값 받기
guess = input("{}: ".format(korean_word))
# 정답 확인하기
if guess == english_word:
print("정답입니다!\n")
else:
print("아쉽습니다. 정답은 {}입니다.\n".format(english_word))
'교육 > [Codeit] 프로그래밍 기초 in Python' 카테고리의 다른 글
실습과제. 로또 시뮬레이션:프로젝트 소개 (0) | 2021.01.15 |
---|---|
실습과제. 고급단어장 (0) | 2021.01.15 |
실습과제. 단어장 만들기 (0) | 2021.01.11 |
파일 쓰기 (0) | 2021.01.10 |
실습과제. 코딩에 빠진 닭 (0) | 2021.01.05 |