정구리의 우주정복
Python Project 01. 단어장 만들기 (4) 3일차 - 단어 시험 만드는 중 , 페이지 구현 본문
반응형
#단어 읽어들여서 20개씩 끊어서 출력해주기
# 이전 , 다음 기능 도 생각해보기
from openpyxl import load_workbook
import wordTest
#data_only = True 를 해야지 값으로 가져옴 (안그러면 수식)
load_wb = load_workbook('./wordList.xlsx',data_only=True)
load_ws = load_wb['wordList'] #시트이름
words = [] #단어가 들어갈 리스트
mean = [] # 뜻이 들어갈 리스트
eng = load_ws['A'] #A,B.. : 열을 가져옴
kor = load_ws['B'] #1,2,... : 행을 가져옴
#word와 mean 에 넣은 상태
for cell in eng:
words.append(cell.value)
for cell in kor:
mean.append(cell.value)
page = 0
end = len(words) #
div = 20 #20개씩 끊어서 출력해줌
#20개씩 각 리스트에저장
wordResult = [words[i*div:(i+1)*div] for i in range((end+div-1)//div)]
meanResult = [mean[i*div:(i+1)*div] for i in range((end+div-1)//div)]
n=0
print('page '+str(page+1)+'/'+str(len(wordResult)))
for i in wordResult[page]:
print(str(n+1)+'. '+i+" "+meanResult[0][n])
n=n+1
n=0
while True:
print('\n(1) 이전 (2) 다음 (3) 원하는 페이지 이동 (4) 현재 단어 시험보기 (5) 단어장 종료\n')
selectMenu = int(input("메뉴입력 : "))
if selectMenu== 1:
if page ==0 :
print("\n첫번째 페이지 입니다\n")
else:
page = page-1
print('page '+str(page+1)+'/'+str(len(wordResult)))
for i in wordResult[page]:
print(str(n+1)+'. '+i+" "+meanResult[int(page)][n])
n=n+1
n=0
elif selectMenu== 2:
if page ==(len(wordResult))-1:
print("\n맨 마지막 장입니다\n")
else:
page = page+1
print('page '+str(page+1)+'/'+str(len(wordResult)))
for i in wordResult[page]:
print(str(n+1)+'. '+i+" "+meanResult[int(page)][n])
n=n+1
n=0
elif selectMenu == 3 :
print("원하는 페이지 공사중")
# pageNum=int(input("원하는 페이지 입력 = "))
# if pageNum > len(wordResult) or pageNum <= 0 :
# print("잘못 입력하셨습니다")
# else:
# page = pageNum
# print('page '+str(page)+'/'+str(len(wordResult)))
# for i in wordResult[page]:
# print(str(n+1)+'. '+i+" "+meanResult[int(page)][n])
# n=n+1
# n=0
elif selectMenu == 4 :
wordTest.getWord(wordResult[page],meanResult[page])
elif selectMenu == 5 :
break
어제보다 선택지를 하나 추가해서 바로 원하는 페이지로 이동할 수 있는걸 만들 예정이다 ! ( 구현하려했지만 실패해서 더 생각해 볼 예정)
오늘은 단어시험 부분을 주로 만들려고 했는데 어떻게 만들어야 할지 모르겠어서 정말 머리가 너무 아팠다
우선 단어시험은 import 받아서 함수로 만들어줄거임 (안그러면 소스가 너무 지저분 해질것같아서 ..)
처음에 생각한건 단어와 뜻을 딕셔너리에 단어 : 뜻 형태로 넣어주고 , 뜻 리스트를 무작위로 출력해 입력값을 받아서 그게 딕셔너리의 단어와 맞는지 를 생각했는데
생각하면 할수록 말도안되고 머리만 터질것같았다 ^^...
그래서 두번째로 생각한게 이중리스트로 만들어주는거 ! (이거 만드는데도 계속 오류나서 엄청 오래걸렸는데 만들고 나니까 너무 간단해서 현타옴 )
wordList[[word],[word]..] 이런 형태의 이중리스트를 만들고 -> 랜덤함수로 순서를 섞어준다 !!
for문 돌려서 뜻을 출력하고 그게 단어와 맞는지 확인 ! 맞으면 맞은 개수에 + 1 해주고 틀리면 틀렸다고 출력
오늘은 랜덤함수로 순서 섞어주는 거까지 구현했다
#단어를 불러오는 부분
import random
#딕셔너리 값 삽입은 그냥 이름[키] = 값
def getWord(wordResult,meanResult):
wordList = [] #단어들이 들어갈 목록
# print(len(wordResult[int(page)]))
n=0
for i in wordResult:
word=[]
word.append(wordResult[n])
word.append(meanResult[n])
wordList.append(word)
n=n+1
random.shuffle(wordList) #wordList 안의 단어들의 순서를 무작위로 해버린다
엄청 오래걸렸는데 만들고 나니까 10줄이네 ..
내일은 단어 시험부분 완성이 목표 ! 단어시험부터 완성하고 페이지 이동 만들어줘야지
반응형
'PYTHON > PROJECT' 카테고리의 다른 글
Comments