[Python] Keypad words

‍허진·2023년 2월 27일
0

Programming

목록 보기
2/10
post-thumbnail

> 과제 요구사항

과거 사용하던 전화기나 폴더폰 등에는 이러한 키패드를 볼 수 있다.

각 알파벳을 키보드의 숫자로 생각한다. 예를 들어, 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 개의 단어를 포함하고 있다.

profile
매일 공부하기 목표 👨‍💻 

0개의 댓글