#!/usr/bin/env python3 ifile = './gibberish.txt' with open(ifile) as f: content = f.read() lines = content.split('\n') words = [ w for l in lines for w in l.split() if w ] words_uniq = {} top_word = None longest_line = None max_uniq_symbols_line = None max_uniq_symbols_line_number = 0 max_uniq_words_line = None max_uniq_words_line_number = 0 palindrome_words = [] lnum = 0 for l in lines: lnum += 1 for w in l.split(): if not w: continue if w in words_uniq: words_uniq[w] += 1 else: words_uniq[w] = 1 if top_word is None: top_word = w else: if words_uniq[w] > words_uniq[top_word]: top_word = w if w == w[::-1] and w not in palindrome_words: palindrome_words.append(w) if longest_line is None: longest_line = l else: if len(l) > len(longest_line): longest_line = l if max_uniq_symbols_line is None: max_uniq_symbols_line = l max_uniq_symbols_line_number = lnum else: if len(set(l)) > len(set(max_uniq_symbols_line)): max_uniq_symbols_line = l max_uniq_symbols_line_number = lnum if max_uniq_words_line is None: max_uniq_words_line = l max_uniq_words_line_number = lnum else: if len(set(l.split())) > len(set(max_uniq_words_line.split())): max_uniq_words_line = l max_uniq_words_line_number = lnum palindrome_words_count = len(palindrome_words) print( """ 1. {0} 2. {1} 3. {2} 4. {3} 5. {4} """.format(top_word, longest_line, max_uniq_symbols_line_number, max_uniq_words_line_number, palindrome_words_count)