# pyfuncs.py import math # # For 'sqrt' in 'area'. # Greet someone by displaying "Hello ", their name, # and an exclamation mark. def greet( name ): print( "Hello " + name + "!" ) # As 'greet', but builds the complete message # in a variable and then displays that. # def greet2( name ): message = "Hello " + name + "!" print( message ) # Returns the largest of three numbers. # def largest( num1, num2, num3 ): # Adapted from # https://www.programiz.com/python-programming/examples/largest-number-three . if ( num1 >= num2 ) and ( num1 >= num3 ): largest = num1 elif ( num2 >= num1 ) and ( num2 >= num3 ): largest = num2 else: largest = num3 return largest # Returns the area of the triangle with the # specified three sides. # def area( a, b, c ): # Adapted from # https://www.programiz.com/python-programming/examples/area-triangle . # This calculates the area using Heron's formula, # explained in # https://en.wikipedia.org/wiki/Heron%27s_formula . s = (a + b + c) / 2.0 # Calculates the semi-perimeter. # I've written 2.0 rather than 2, because otherwise # Python 2 will return an integer, giving the wrong # answer. # See https://stackoverflow.com/questions/2958684/python-division . area = math.sqrt( s * (s-a) * (s-b) * (s-c) ) # Calculates the area. return area # Given a number of days, returns a list containing # the number of complete weeks, and the number of # days left over. # def days_to_weeks( ndays ): nweeks = ndays // 7 ndays_left = ndays % 7 return [ nweeks, ndays_left ] # Given a list of numbers, plots it as a graph # sideways on the console. Each number y is # plotted as (y-1) spaces followed by a star. # So for this to work well, the numbers need # to fit within the console linewidth. They # must also be integers. # def plot( ys ): # Adapted from j08lue's answer to # https://stackoverflow.com/questions/20295646/python-ascii-plots-in-terminal . for y in ys: line = ' '*(y-1) + '*' print line # Tries 'plot' with some sample data. According to # the above link, this is basically ( sin(x)+1 )*20 . # def try_plot(): ys = [20, 26, 32, 37, 39, 40, 38, 35, 30, 23, 17, 10, 5, 2, 0, 1, 3, 8, 14, 20] plot( ys ) def count_words( filename ): # Adapted from # http://pythonforengineers.com/create-a-word-counter-in-python/ . f = open( filename, "r" ) data = f.read() f.close() # # Read the text from the specified file. words = data.split( ' ' ) # # Split the data on spaces, giving a list. # The list isn't quite words, since some elements # will contain newlines as well. That doesn't # matter for this demo. count = len( words ) # # Get its length. return count