import random import time def list_max(lst): biggest = lst[0] for elt in lst: if elt > biggest: biggest = elt return biggest def list_max_better(lst): if len(lst) == 0: raise Exception("Input lst must have at least one value") return list_max(lst) def list_max_even_better(lst): if len(lst) == 0: raise Exception("Input lst must have at least one value") biggest = lst[0] for elt in lst: try: if elt > biggest: biggest = elt except TypeError: raise Exception("Elements of lst must be comparable") return biggest def get_scores(): print("Enter the scores one at a time. Blank score finishes.") scores = [] line = input("Enter score: ") while line != "": scores.append(float(line)) line = input("Enter score: ") return scores def get_scores_better(): print("Enter the scores one at a time. Blank score finishes.") scores = [] line = input("Enter score: ") while line != "": try: scores.append(float(line)) except ValueError: print("Please only enter decimal numbers") return scores def print_file_stats(filename): file = open(filename, "r") longest = "" shortest = "" total_length = 0 count = 0 for word in file: word = word.strip() if len(word) > len(longest): longest = word if shortest == "" or len(word) < len(shortest): shortest = word total_length += len(word) count += 1 file.close() print("Number of words: " + str(count)) print("Longest word: " + longest) print("Shortest word: " + shortest) print("Avg. word length: " + str(float(total_length) / count)) def print_file_stats_better(filename): try: print_file_stats(filename) except FileNotFoundError: print("File doesn't exist, no stats available") except ZeroDivisionError: pass