상세 컨텐츠

본문 제목

중학 영어 단어 암기 파이썬 프로그램 (Flash Card V1.0) 무료 공유

IT & Programming/파이썬 (Python) 공부

by 그림아이 2023. 6. 12. 21:08

본문

반응형

중학 영어 단어 암기 파이썬 프로그램 (Flash Card V1.0)

 

□ 제목 : 중학 영어 단어 암기 파이썬 프로그램 (Flash Card V1.0) 무료 공유

□ 개발자 : 알고리즘 자체 개발 및 ChatGPT 코딩

□ 단어 : 중학교 필수 영단어 1,800개 (구글링으로 수집)

□ 파일 형식 : EXE, TXT (악성 코드 및 광고 없음)

□ 파일 다운로드 : Flash_Card_V1.exe

Flash_Card_V1.exe
9.49MB

□ 파일 다운로드 : Flash_Card_words.txt

Flash_Card_words.txt
0.04MB

 

※ 주의 : EXE 실행 파일과 TXT 파일은 반드시 같은 폴더 안에 두고 실행해야 합니다.

 

중학 영어 단어 암기 파이썬 프로그램 (Flash Card V1.0)

 

반응형

 

주요 내용

 

사랑하는 딸이 중학교에 올라가서 영어 공부로 스트레스를 받는 것 같아서 뭔가 도움이 될만한 것이 없나 고민하던 중에 문득 떠오른 아이디어 하나로 개발하게 되었습니다. 파이썬으로 개발했고, 회사를 다니면서 직접 개발하면 이틀 정도 걸릴 것 같았는데 역시 ChatGPT에게 제가 고안한 알고리즘을 알려주고 코딩을 시켜보니 반나절만에 완성했습니다. 이젠 정말 알고리즘만 제대로 구상하기만 하면 자질구레한 코딩은 직접 하지 않아도 될 듯 합니다.

 

단어는 일단 중학생 수준에서 필수 단어라고 생각되는 단어만 1,800개를 구글에서 검색으로 찾아 정리했습니다. 텍스트 파일을 함께 배포 드리니 자유롭게 편집하시면 됩니다. 단어와 뜻 사이에는 '^^^' 기호로 분리했으니 새롭게 추가하시거나 편집하실 때 참고하시기 바랍니다.

 

제가 생각한 알고리즘은 아래를 참고하시면 됩니다. 많은 분들께 도움이 되길 바라는 마음에서 무료로 공개하니 마음껏 사용하시고, 자유롭게 배포하셔도 되지만, 상업적인 용도로만 사용하지 마시기를 바랍니다. 궁금하신 점이 있으시면 언제든지 댓글로 남겨주시면 시간 나는 대로 답변 드리겠습니다.

 

 

직접 구상해서 ChatGPT에게 제시한 알고리즘

 

1. 텍스트 파일에 영어 단어와 한국어 번역이 ‘^^^’ 표시로 연결되어 있고 총 1,800개의 단어가 있다.

 

2. 프로그램을 실행하면 대화창이 출력되고 랜덤으로 영어 단어를 보여주고 정답 버튼을 누르면 영어 단어의 ‘^^^’ 뒤에 있는 한국어 번역을 보여준다.

 

3. 자신이 암기했다고 생각하면 ‘암기 완료’ 버튼을 누르고, 좀 더 공부해야 한다고 생각하면 ‘다시 도전’ 버튼을 누를 수 있다.

 

4. 단어장은 세 개의 그룹으로 계속해서 업데이트되어야 한다. 아직 한 번도 보여지지 않은 단어들의 그룹, ‘다시 도전’으로 분류된 그룹, ‘암기 완료’로 분류된 그룹으로 저장되어서 프로그램을 다시 실행해도 그룹은 유지된다. 텍스트 문서에는 크게 3가지의 그룹으로 구성되어 있다. 그룹은 [new], [practice], [complete]으로 구성되어 있고 초기화된 상태는 [new]에만 단어들이 들어있고, 나머지 두 개의 그룹에는 어떤 것도 추가되어 있지 않다. 처음 프로그램을 실행하면 3개의 그룹의 단어들을 각각의 변수들에 리스트로 가져온 후에 [new] 그룹에서 랜덤으로 추출해서 보여주고, 사용자가 ‘다시 도전’ 버튼을 누르면 단어는 [practice] 그룹으로 보내어지고, ‘암기 완료’ 버튼을 누르면 단어는 [complete] 그룹으로 보내져서 각각의 변수에 저장된다. ‘다시 도전’ 또는 ‘암기 완료’ 버튼을 누르면 다음 단어를 출력해야 하는데 이때 [practice] 그룹에 단어가 비어있다면 [new] 그룹에서만 단어를 랜덤으로 추출하고, [practice] 그룹에 단어가 비어있지 않다면 [practice] 그룹의 단어들 전체와 [practice] 그룹의 단어들의 수와 같은 수를 [new] 그룹에서 랜덤으로 추출하여 [practice] 그룹의 단어들과 [new] 그룹 단어들을 합친 뒤에 랜덤으로 다시 추출해서 출력하도록 한다. [practice] 그룹의 단어들도 출력한 뒤 사용자가 ‘암기 완료’ 버튼을 누르면 [complete] 그룹으로 이동한다. 사용자가 ‘공부 종료’ 버튼을 누르면 현재까지 저장해 둔 3개의 그룹의 변수들을 텍스트 문서에 [new], [practice], [complete]에 맞춰서 다시 작성 후 저장한다.

 

5. 랜덤으로 영어 단어를 보여줄 때, 아직 한 번도 보여지지 않은 그룹과 ‘다시 도전’ 그룹의 단어들을 같은 비율로 가져온 뒤 랜덤으로 추출한다. 예를 들면, ‘다시 도전’ 그룹의 단어가 10개인 경우, 아직 한 번도 보여지지 않은 그룹의 단어 10개를 랜덤으로 추출한 후 20개에서 랜덤으로 추출하여 화면에 출력한다.

 

6. 대화창의 구성은 영어 단어를 보여주는 화면, 정답을 출력하는 화면, 정답 버튼, ‘암기 완료’ 버튼, ‘다시 도전’ 버튼, ‘초기화’ 버튼, ‘공부 종료’ 버튼으로 구성된다. ‘초기화’ 버튼을 누르면 모든 단어들이 [new] 그룹으로 이동되고 [practice]와 [complete] 그룹은 비어있게 된다. 그러면서 동시에 [new] 그룹의 단어 중 하나를 랜덤으로 추출해서 출력한다.

 

'정답' = 'Correct Answer'

'암기 완료' = 'Memorization Complete'

'다시 도전' = 'Challenge Again'

'초기화' = 'Reset'

'공부 종료' = 'End Study'

 

 

파이썬 (Python) 코딩 전문 공유

 

import tkinter as tk
import random
import codecs
import webbrowser
 
class VocabStudy:
    def __init__(self, master):
        self.master = master
        self.master.geometry('400x300')  # Adjust size
        self.master.title('Flash Card Program')
        self.words = {'[new]': [], '[practice]': [], '[complete]': []}
        self.current_word = None

        self.word_var = tk.StringVar()
        self.answer_var = tk.StringVar()
        # Increase font size and adjust label sizes
        self.word_label = tk.Label(master, textvariable=self.word_var, width=30, height=3, wraplength=300, font=("Helvetica", 18))
        self.answer_label = tk.Label(master, textvariable=self.answer_var, width=30, height=3, wraplength=300, font=("Helvetica", 18))
        self.word_label.pack()
        self.answer_label.pack()
 
        self.get_words_from_file()
 
        button_frame = tk.Frame(self.master)
        button_frame.pack()
 
        tk.Button(button_frame, text='Correct Answer', command=self.show_answer).grid(row=0, column=0, padx=10, pady=10)
        tk.Button(button_frame, text='Memorization Complete', command=self.memorization_complete).grid(row=0, column=1, padx=10, pady=10)
        tk.Button(button_frame,text='Challenge Again', command=self.challenge_again).grid(row=0, column=2, padx=10, pady=10)
        tk.Button(button_frame, text='Reset', command=self.reset).grid(row=1, column=0, padx=10, pady=10)
        tk.Button(button_frame, text='End Study', command=self.end_study).grid(row=1, column=1, padx=10, pady=10)
 
        # Website link label
        link_label = tk.Label(master, text="studyingengineer.tistory.com", fg="blue", cursor="hand2")
        link_label.pack()
        link_label.bind("<Button-1>", lambda e: webbrowser.open_new("http://studyingengineer.tistory.com/"))
 
        self.show_word()
 
    def get_words_from_file(self):
        with codecs.open('Flash_Card_words.txt', 'r', 'utf-8') as f:
            lines = f.readlines()
        group = None
        for line in lines:
            line = line.strip()
            if line in self.words.keys():
                group = line
            elif line != '':
                self.words[group].append(line.split('^^^')) # type: ignore
 
    def show_word(self):
        if not self.words['[new]'] and not self.words['[practice]']:
            self.word_var.set('No more words to study')
            return
        if not self.words['[practice]']:
            self.current_word = random.choice(self.words['[new]'])
        else:
            practice_len = len(self.words['[practice]'])
            combined_list = self.words['[new]'][:practice_len] + self.words['[practice]']
            self.current_word = random.choice(combined_list)
        self.word_var.set(self.current_word[0])
        self.answer_var.set('')

    def show_answer(self):
        self.answer_var.set(self.current_word[1])

    def memorization_complete(self):
        if self.current_word in self.words['[new]']:
            self.words['[new]'].remove(self.current_word)
            self.words['[complete]'].append(self.current_word)
        elif self.current_word in self.words['[practice]']:
            self.words['[practice]'].remove(self.current_word)
            self.words['[complete]'].append(self.current_word)
        self.show_word()

    def challenge_again(self):
        if self.current_word in self.words['[new]']:
            self.words['[new]'].remove(self.current_word)
            self.words['[practice]'].append(self.current_word)
        self.show_word()

    def reset(self):
        self.words['[new]'] += self.words['[practice]'] + self.words['[complete]']
        self.words['[practice]'] = []
        self.words['[complete]'] = []
        self.show_word()

    def end_study(self):
        with codecs.open('words.txt', 'w', 'utf-8') as f:
            for group, word_list in self.words.items():
                f.write(group + '\n')
                for word in word_list:
                    f.write('^^^'.join(word) + '\n')
        self.master.quit()

if __name__ == '__main__':
    root = tk.Tk()
    vocab_study = VocabStudy(root)
    root.mainloop()

 

참고할만한 다른 자료들

 

숫자 야구 버전1 파이썬 게임 무료 다운로드: 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙 등 공개 (tistory.com)

 

숫자 야구 버전1 파이썬 게임 무료 다운로드: 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙

숫자 야구 버전1 파이썬 게임 무료 다운로드 □ 제목 : 숫자 야구 버전1 (Baseball With Numbers Version1) □ 언어 : Python (파이썬) □ 제작 : 알고리즘 작성 → ChatGPT에 제작 요청 → 디버깅 및 검토 → ChatGP

studyingengineer.tistory.com

숫자 야구 버전2 파이썬 게임 무료 다운로드: 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙 등 공개 (tistory.com)

 

숫자 야구 버전2 파이썬 게임 무료 다운로드: 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙

숫자 야구 버전2 파이썬 게임 무료 다운로드 □ 제목 : 숫자 야구 버전2 (Baseball With Numbers Version2) □ 언어 : Python (파이썬) □ 제작 : 알고리즘 작성 → ChatGPT에 제작 요청 → 디버깅 및 검토 → ChatGP

studyingengineer.tistory.com

숫자 야구 버전3 파이썬 게임 무료 다운로드: 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙 등 공개 (tistory.com)

 

숫자 야구 버전3 파이썬 게임 무료 다운로드: 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙

숫자 야구 버전3 파이썬 게임 무료 다운로드 □ 제목 : 숫자 야구 버전3 (Baseball With Numbers Version3) □ 언어 : Python (파이썬) □ 제작 : 알고리즘 작성 → ChatGPT에 제작 요청 → 디버깅 및 검토 → ChatGP

studyingengineer.tistory.com

Wordle (워들) 파이썬 게임 무료 공개 (광고 없음): 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규칙 등 공개 (tistory.com)

 

Wordle (워들) 파이썬 게임 무료 공개 (광고 없음): 파이썬 소스 코드, ChatGPT와의 제작 과정, 게임 규

Wordle (워들) 게임 무료 공개 제목 : Wordle 게임 언어 : Python (파이썬) 제작 : 알고리즘 작성 → ChatGPT에 제작 요청 → 디버깅 및 검토 → ChatGPT에 보완 요청 → 완성 공개 : 2023년 5월 14일, 광고 없음

studyingengineer.tistory.com

[Python] 구구단 출력하기 파이썬 프로그램 예제 (tistory.com)

 

[Python] 구구단 출력하기 파이썬 프로그램 예제

이번 시간에는 파이썬으로 구구단을 출력해주는 프로그램을 만들어 보겠습니다. 구구단은 보통 1~9까지 숫자를 각각 1~9까지 곱해서 곱셈을 외우고 공부하기 쉽게 만든 것을 의미합니다. 그런데

studyingengineer.tistory.com

 

728x90
반응형

관련글 더보기

댓글 영역