Mittwoch, 9. Oktober 2013

 

Musterlösung zu Wiederholung Python (POS1: 2BHIF)

Eine mögliche Lösung zur Aufgabe Wiederholung Python (POS1: 2BHIF) ist folgende:
"""
text_analyzer.py
Task 1: Repeat previous material (1st class)
2012-09-10, Harald R. Haberstroh (hp@htlwrn.ac.at)
"""


def input_sentences():
    '''returns al list of sentences/lines'''
    lst = []
    eof = False
    while not eof:
        try:
            line = input("Satz: ")
            lst.append(line)
        except EOFError:
            eof = True
    return lst


def _remove_punctuation(string):
    '''helper removes all punctuation marks within string'''
    for punctuation in '''"',;.:-''':
        string = string.replace(punctuation, " ")
    return string


def split_sentences(lst):
    '''split a list (lst) of sentences into list of list of words'''
    wordlist = []
    for sentence in lst:
        wordlist.append(_remove_punctuation(sentence).split())
    return wordlist


def purge_bad_words(lst):
    '''remove all bad words (length less than 2 chars, words
    containing non alphabetic chars)
    '''
    for sublist in lst:
        idx = 0
        while idx < len(sublist):
            if not len(sublist[idx]) >= 2 or not sublist[idx].isalpha():
                del(sublist[idx])
            else:
                idx += 1
    return lst


def analyze_words(lst):
    '''returns a dictionary of words (with the number of occurrences)
    of the list of list of words'''
    dict = {}
    for sublist in lst:
        for word in sublist:
            word = word.lower()
            if word in dict:
                dict[word] += 1
            else:
                dict[word] = 1
    return dict

def analyze_letters(lst):
    '''returns a dictionary of letters (with the number of occurrences)
    of the list of list of words'''
    dict = {}
    for sublist in lst:
        for word in sublist:
            for char in word.lower():
                if char in dict:
                    dict[char] += 1
                else:
                    dict[char] = 1
    return dict
                

def purge_analyzed_letters(dic):
    '''remove umlauts'''
    for umlaut in "äöüß":
        if umlaut in dic:
            del(dic[umlaut])
    return dic


def _key(tupl):
    '''returns 2nd element of tuple for sorting'''
    return tupl[1]


def sort_letters(dic):
    '''returns a sorted list of tuples of letters, sorted by
    number of letters'''
    tuples = list(dic.items())
    tuples.sort(key=_key, reverse=True)
    return tuples


def test_input():
    '''returns a fixed list of sentences for testing purposes'''
    return ['Maxi und Mini verliefen sich im Wald, aber bald.',
        '10 alte Fledermäuse flogen im Wald',
        'Hat die alte Meisterhexe...',
        "Seid's gewesen. Denn als Geister...",
        'Erst hervor der alte Meister.']


if __name__ == '__main__':
    #lst = input_sentences()
    lst = test_input()
    
    print('split_sentences(lst)')
    wordlist = split_sentences(lst)
    print(wordlist)
    
    print('\npurge_bad_words(wordlist)')
    wordlist = purge_bad_words(wordlist)
    print(wordlist)

    print('\nanalyze_words(wordlist)')
    print(analyze_words(wordlist))

    print('\nanalyze_letters(wordlist)')
    dic = analyze_letters(wordlist)
    print(dic)

    print('\npurge_analyzed_letters(dic)')
    dic = purge_analyzed_letters(dic)
    print(dic)

    print('\nsort_letters(dic)')
    sorted_letters = sort_letters(dic)
    print(sorted_letters)

    print('\n\n*** task 9 ***\n')
    print('''"abcdef".index("c")''') # ValueError: substring not found
    print('''ValueError: substring not found''')
    print('''"abcdef".index("g")''') # ValueError: substring not found
    print('''ValueError: substring not found''')
    print('''"abcdef".index("de")''')
    print("abcdef".index("de"))
    print('''"c" in "abcdef" ''')
    print("c" in "abcdef")
    print('''"g" in "abcdef" ''')
    print("g" in "abcdef")
    print('''"de" in "abcdef" ''')
    print("de" in "abcdef")
    print('''"abcdef"[2:4]''')
    print("abcdef"[2:4])
    print('''"abcdef"[2:]''')
    print("abcdef"[2:])
    print('''"abcdef"[-1]''')
    print("abcdef"[-1])
    print('''"abcdef"[2:-1]''')
    print("abcdef"[2:-1])
    print('''[1, 2, 3, 4, 5].index(3)''')
    print([1, 2, 3, 4, 5].index(3))
    print('''[1, 2, 3, 4, 5].index(9)''') # ValueError: 9 is not in list
    print('''ValueError: 9 is not in list''')
    print('''[1, 2, 3, 4, 5][5]''') # IndexError: list index out of range
    print('''IndexError: list index out of range''')
    print('''[1, 2, 3, 4, 5][2:4]''')
    print([1, 2, 3, 4, 5][2:4])
    print('''[1, 2, 3, 4, 5][-2]''')
    print([1, 2, 3, 4, 5][-2])
    print('''[1, 2, 3, 4, 5][5:9]''')
    print([1, 2, 3, 4, 5][5:9])
    print('''[1, 2, 3, 4, 5][4:]''')
    print([1, 2, 3, 4, 5][4:])
    print('''len("abc") + len(range(3)) + len({1, 2, 3}) + len({1: 2, 2: 3})''')
    print(len("abc") + len(range(3)) + len({1, 2, 3}) + len({1: 2, 2: 3}))

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]