과거 사용하던 전화기나 폴더폰 등에는 이러한 키패드를 볼 수 있다.
각 알파벳을 키보드의 숫자로 생각한다. 예를 들어, 2는 (A, B, C)를 나타낼 수 있으며, 9는 (W, X, Y, Z)를 나타낼 수 있다.
숫자 10개를 입력 받고, 10개의 숫자에서 만들 수 있는 단어를 단어 모음(words.txt)에서 찾아 출력한다.
from typing import List
WORDLIST_FILENAME = "words.txt"
def load_words():
"""
returns: list, a list of valid words. Words are strings of lowercase letters.
Depending on the size of the word list, this function may
take a while to finish.
"""
# inFile: file
inFile = open(WORDLIST_FILENAME, 'r')
# line: string
line = inFile.readline()
# wordlist: list of strings
wordlist = line.split()
return wordlist
all_words_list = load_words()
#-------------------------------------
phone={'a':'2','b':'2','c':'2','d':'3','e':'3','f':'3','g':'4','h':'4','i':'4','j':'5','k':'5','l':'5','m':'6','n':'6','o':'6','p':'7','q':'7','r':'7','s':'7','t':'8','u':'8','v':'8','w':'9','x':'9','y':'9','z':'9'}
'''Change all words to num'''
save=[]
for i in all_words_list:
str_list=list(i)
StrToNum=[]
for j in str_list:
if j in phone:
tmp=phone[j]
StrToNum.append(tmp)
res=''.join(StrToNum)
save.append(res)
while(1):
x=input('Enter Ten Digit Number : ')
try:
test__=int(x) # ignore english input
if(len(x)!=10):
print('--> Invalid. It is Not a 10-digit positive integer string')
else:
tmp=list(x)
while '0' in tmp:
tmp.remove('0')
while '1' in tmp:
tmp.remove('1')
key=''.join(tmp)
answer=[]
index=0
for i in save:
if i in key:
answer.append(all_words_list[index])
index=index+1
print('--> ',sorted(answer))
except:
x=x.lower()
if(x=='q'or x=='quit'):
print('Goodbye~~')
break
print('--> Invalid. It is Not a 10-digit positive integer string')
https://drive.google.com/file/d/1r8HUq550amFLUv3sWkYOAXROlvCVpBnv/view?usp=share_link
words.txt 파일. 55900 개의 단어를 포함하고 있다.