본문 바로가기

Python_Matter/[Check_IO]Home

Popular Words

Quiz>

In this mission your task is to determine the popularity of certain words in the text.

 

At the input of your function are given 2 arguments: 

the text and the array of words the popularity of which you need to determine.

 

When solving this task pay attention to the following points:

 

The words should be sought in all registers. 

This means that if you need to find a word "one" then words like "one", "One", "oNe", "ONE" etc. will do.

The search words are always indicated in the lowercase.

If the word wasn’t found even once, it has to be returned in the dictionary with 0 (zero) value.

 

Input:

The text and the search words array.

 

Output:

The dictionary where the search words are the keys and values are the number of times when those words are occurring in a given text.

 

Example:

popular_words("""

When I was One

I had just begun

When I was Two

I was nearly new

""", ['i', 'was', 'three', 'near']) == {

    'i': 4,

    'was': 3,

    'three': 0,

    'near': 0

}

 

Precondition:

The input text will consists of English letters in uppercase and lowercase and whitespaces.

 

def popular_words(text: str, words: list) -> dict:
    # your code here
    return None


if __name__ == '__main__':
    print("Example:")
    print(popular_words("""
When I was One
I had just begun
When I was Two
I was nearly new
""", ['i', 'was', 'three', 'near']))

    # These "asserts" are used for self-checking and not for an auto-testing
    assert popular_words("""
When I was One
I had just begun
When I was Two
I was nearly new
""", ['i', 'was', 'three', 'near']) == {
        'i': 4,
        'was': 3,
        'three': 0,
        'near': 0
    }
    print("Coding complete? Click 'Check' to earn cool rewards!")

 

Solve>

1. 대소문자 상관없이 찾는다.

   lower()를 사용하면 문자를 소문자로 변경 할 수 있다.

def popular_words(text: str, words: list):
    text = text.lower()

 

2. 공백 단위로 나눈다.

def popular_words(text: str, words: list):
    splitted_words = text.split()

 

3. 돌려줄 빈 딕셔너리를 만든다.

def popular_words(text: str, words: list):
    answer = {}

 

4. 문자열을 세어서 돌려준다.

def popular_words(text: str, words: list):
    for word in words:
        answer[word] = splitted_words.count(word)

    return answer

 

Code>

def popular_words(text: str, words: list):
    text = text.lower()
    splitted_words = text.split()
    answer = {}

    for word in words:
        answer[word] = splitted_words.count(word)

    return answer

 

Example>

if __name__ == '__main__':
    print("Example:")
    print(popular_words('''
When I was One
I had just begun
When I was Two
I was nearly new
''', ['i', 'was', 'three', 'near']))

    # These "asserts" are used for self-checking and not for an auto-testing
    assert popular_words('''
When I was One
I had just begun
When I was Two
I was nearly new
''', ['i', 'was', 'three', 'near']) == {
        'i': 4,
        'was': 3,
        'three': 0,
        'near': 0
    }
    print("Coding complete? Click 'Check' to earn cool rewards!")

 

Result>

Example:

{'i': 4, 'was': 3, 'three': 0, 'near': 0}

Coding complete? Click 'Check' to earn cool rewards!

'Python_Matter > [Check_IO]Home' 카테고리의 다른 글

All the Same  (0) 2020.04.15
Non-unique Elements  (0) 2020.04.15
Popular Words  (0) 2020.04.15
Sort Array by Element Frequency  (0) 2020.04.15
Pawn Brotherhood  (0) 2020.04.15
Sun Angle  (0) 2020.04.15