study_log blog
간단한-파이썬-영어-로고

 

파이썬 과제물 중 간단하게 만들었던 과제물이다.

순서대로 영어 단어장, 영한 사전 및 단어 학습 테스트 프로그램이다.

간단하게만 작성했던 코드라 예외처리가 제대로 되어 있지 않은 부분도 꽤 있다.


1. 영어 단어장 프로그램

단어 입력(영어만), 삭제, 전체 출력, 종료 기능으로 구성되어 있다.

  1. 1번 메뉴 : 엔터 키를 누를 때까지 단어를 입력받는다. 이미 있는 경우 Already Exist 문구가 출력된다.
  2. 2번 메뉴 : 단어장에서 검색한 단어를 삭제한다. 없는 단어의 경우 No Exist 문구 출력 및 계속해서 입력받도록 한다.
  3. 3번 메뉴 : 단어장에 있는 모든 단어가 출력된다.
  4. 4번 메뉴 : 프로그램 종료
  5. 기타 : 메뉴 입력이 정상적이지 않을 경우 오류 관련 문구가 출력되도록 한다.

 

먼저 코드는 다음과 같다.


words = []

while True:
  for i in range(50):
    print('*', end = "")
  print("\n*             ENGLISH DICTIONARY               *")
  for i in range(50):
    print('*', end = "")
  print("\n\t\t1. Save words \n\t\t2. Delete words \n\t\t3. Print all words \n\t\t4. Exit")
  for i in range(50):
    print('=', end = "")

  #메뉴 입력받고 숫자가 아닌 경우 반복
  try:
    menu_select = int(input("\nSelect >> "))
  except:
    print("Please write number! \n")
    continue

  words_number = len(words)

  #1번 메뉴
  if menu_select == 1:
    i = 0
    while True:
      print("\nEnter word to save (Press 'Enter' key to finish) \n")
      while True:
        word = str(input("Word : "))
        if word in words:
          print("\nAlready Exist\n")
        else:
          break
      words.append(word)
      if words[i] == '':
        break
      i += 1

  #2번 메뉴
  elif menu_select == 2:
    print("\nEnter word to delete")
    while True:
      word = str(input("Word : "))
      if word in words:
        words.remove(word)
        print("\nDeletion complete\n")
        break
      else:
        print("\nNo Exist\n")

  #3번 메뉴
  elif menu_select == 3:
    for i in range(words_number - 1):
      print(words[i])
      i += 1

  #4번 메뉴
  elif menu_select == 4:
    print("Thank You!")
    break
  
  #메뉴 입력 시 1~4가 아닌 다른 숫자를 입력했을 때
  else :
    print("You entered wrong menu!")

 

작동 방식은 다음과 같다.

먼저 1~4의 숫자를 입력하지 않는 경우 숫자를 재입력하라는 문구가 출력되고, 메뉴 입력으로 되돌아간다.

만약 1~4가 아닌 다른 숫자를 입력한 경우에도 잘못 입력했다는 문구가 출력되며, 메뉴 입력으로 되돌아간다.

 

오류-문자를-메뉴에-입력한-경우

 

이후 제대로 된 번호(1~4) 중 1번을 입력하게 되면 단어 입력을 받게 되고,

동일 단어가 이미 존재하는 경우 이미 존재하고 있다는 의미의 문구가 출력된다.

엔터를 입력하는 경우 입력이 종료되며 메뉴 입력으로 되돌아간다.

 

메뉴-선택-1번

 

메뉴 입력에서 2를 입력하는 경우 삭제로 넘어간다.

입력한 단어가 리스트에 존재하지 않는 경우 존재하지 않는다는 의미의 문구가 출력된다.

만약 존재하는 경우 해당 단어를 삭제하고 삭제가 완료되었다는 의미의 문구를 출력한 후 다시 메뉴 입력으로 되돌아간다.

 

메뉴-선택-2번

 

메뉴 입력에서 3을 입력할 경우 전체 단어가 출력된다.
출력을 완료한 후에는 메뉴 입력으로 되돌아간다.

 

메뉴-선택-3번

 

메뉴 입력에서 4를 입력할 경우 프로그램을 종료한다.

종료 전에 감사 문구를 출력한다.

 

메뉴-선택-4번

 


2. 영한 사전 및 학습 테스트 프로그램

단어 입력(한글 뜻 포함), 삭제, 전체 출력, 사전에서 단어 찾기, 테스트, 테스트 순위 출력, 종료 기능으로 구성되어 있다.

  1. 1번 메뉴 : 엔터 키를 누를 때까지 단어를 입력받는다. 이미 있는 경우 Already Exist 문구가 출력된다.
  2. 2번 메뉴 : 단어장에서 검색한 단어를 삭제한다. 없는 단어의 경우 No Exist 문구 출력 및 계속해서 입력받도록 한다.
  3. 3번 메뉴 : 단어장에 있는 모든 단어가 출력된다.
  4. 4번 메뉴 : 입력된 단어의 뜻을 사전에서 찾아 출력한다.
  5. 5번 메뉴 : 사전에 있는 모든 단어에 대해 테스트를 진행한다.
  6. 6번 메뉴 : 진행한 테스트에 대한 성적 순위를 출력한다. (등수 - 맞춘 개수 출력)
  7. 7번 메뉴 : 프로그램 종료
  8. 기타 : 메뉴 입력이 정상적이지 않을 경우 오류 관련 문구가 출력되도록 한다.

 

먼저 코드는 다음과 같다.


#사전 리스트 정의
words = []
means = []
scores = []

while True:

  #사전 메뉴 출력
  for i in range(50):
    print('*', end = "")
  print("\n*             ENGLISH DICTIONARY               *")
  for i in range(50):
    print('*', end = "")
  print("\n\t\t1. Save words \n\t\t2. Delete words \n\t\t3. Print all words")
  print("\t\t4. Search word \n\t\t5. Word Test \n\t\t6. Show Test Score \n\t\t7. Exit")
  for i in range(50):
    print('=', end = "")

  #메뉴 입력받고 숫자가 아닌 경우 반복
  try:
    menu_select = int(input("\nSelect >> "))
  except:
    print("Please write number! \n")
    continue

  #기타 정의
  words_number = len(words)
  score = 0
  scores.sort(reverse=True)

  #1번 메뉴
  if menu_select == 1:
    i = 0
    print("Enter word to save. Press 'Enter' to finish \n")

    while True:
      while True:
        word = str(input("Word : "))
        if word in words:
          print("Already Exist")
        else:
          break
      words.append(word)

      if words[i] == '':
        words.remove(words[i]) #마지막 공백 단어 삭제
        break

      i += 1
      mean = str(input("Mean : "))
      means.append(mean)

  #2번 메뉴
  elif menu_select == 2:
    print("Enter word to delete \n")
    while True:
      word = str(input("Word : "))
      if word in words:
        word_index = words.index(word) #단어 리스트에서 해당 단어의 순번을 찾음
        words.remove(word)
        means.remove(means[word_index]) #뜻 리스트에서 순번을 활용하여 찾은 뒤 삭제
        print("Deletion is completed")
        break
      else:
        print("No such words")

  #3번 메뉴
  elif menu_select == 3:
    print("\n")
    for i in range(words_number):
      print(words[i] + "\t" + means[i])
      i += 1

  #4번 메뉴
  elif menu_select == 4:
    print("Enter word to search \n")
    word = str(input("Word : "))
    if word in words:
      word_index = words.index(word) #단어 리스트에서 해당 단어의 순번을 찾음
      print(words[word_index] + "\t" + means[word_index])
    else:
      print(word, "is not found")

  #5번 메뉴
  elif menu_select == 5:
    for i in range(words_number):
      answer = str(input(words[i] + ": "))
      if answer == means[i]:
        print("Correct! \n")
        score += 1
        i += 1
      else:
        print("Wrong... \n")
        i += 1
    print("You got", str(score), "answers")
    scores.append(score)

  #6번 메뉴
  elif menu_select == 6:
    print("   ScoreBoard\n===============")
    for i in range(len(scores)):
      print(i+1, "rank\t", str(scores[i]), "answers")

  #7번 메뉴
  elif menu_select == 7:
    print("Thanks for using dictionary")
    break

  #메뉴 입력 시 1~4가 아닌 다른 숫자를 입력했을 때
  else :
    print("You entered wrong menu!")

 

작동 방식은 다음과 같다.

먼저 1~7의 숫자를 입력하지 않는 경우 숫자를 재입력하라는 문구가 출력되고, 메뉴 입력으로 되돌아간다.

만약 1~7가 아닌 다른 숫자를 입력한 경우에도 잘못 입력했다는 문구가 출력되며, 메뉴 입력으로 되돌아간다.

 

오류-문자를-메뉴에-입력한-경우-및-다른-숫자를-입력한-경우

 

이후 제대로 된 번호(1~4) 중 1번을 입력하게 되면 단어 입력을 받게 되고,

동일 단어가 이미 존재하는 경우 이미 존재하고 있다는 의미의 문구가 출력된다.

엔터를 입력하는 경우 입력이 종료되며 메뉴 입력으로 되돌아간다.

 

메뉴-선택-1번-2

 

메뉴 입력에서 2를 입력하는 경우 삭제로 넘어간다.

입력한 단어가 리스트에 존재하지 않는 경우 존재하지 않는다는 의미의 문구가 출력된다.

만약 존재하는 경우 해당 단어를 삭제하고 삭제가 완료되었다는 의미의 문구를 출력한 후 다시 메뉴 입력으로 되돌아간다.

 

메뉴-선택-2번-2

 

메뉴 입력에서 3을 입력할 경우 전체 단어가 출력된다.
출력을 완료한 후에는 메뉴 입력으로 되돌아간다.

 

메뉴-선택-3번-2

 

메뉴 입력에서 4를 입력할 경우 사전에서 입력한 단어를 찾는다.

만약 단어가 없을 경우에는 없다는 의미의 문구가 출력되며, 메뉴 입력으로 되돌아간다.

단어가 있을 경우에는 해당 단어와 단어의 뜻을 출력하고 메뉴 입력으로 돌아간다.

 

메뉴-선택-4번-2

 

메뉴 입력에서 5를 입력할 경우 테스트를 진행한다.

틀릴 경우 Wrong이라는 문구가 출력되며 맞을 경우 Correct라는 문구가 출력된다.

가장 마지막에는 맞은 개수가 출력되며, 출력이 완료된 후에는 메뉴 입력으로 되돌아간다.

 

메뉴-선택-5번

 

메뉴 입력에서 6을 입력할 경우 테스트에 대한 점수를 출력한다.

순위 - 정답 수 순서로 출력한다.

출력이 완료되면 메뉴 입력으로 되돌아간다.

 

메뉴-선택-6번

 

메뉴 입력에서 7을 입력할 경우 프로그램을 종료한다.

종료 전에 감사 문구를 출력한다.

 

메뉴-선택-7번