CSC111 Python Programs Fall 2015
--D. Thiebaut (talk) 10:34, 18 September 2015 (EDT)
Contents
Wed., 9/16/15
# displayWeek.py # D. Thiebaut # displays a schedule for the five days of the week length = eval( input( "Length of bar? " ) ) print( "-" * length ) for day in [ "Mo:", "Tu:", "We:", "Th:", "Fr:" ]: print( day ) #print( " :" * 2) print( " :" ) print( "-" * length )
Friday, 9/18/15
# displayGrade.py # D. Thiebaut # # prompts user for information and # grade. # display user's grade in graph, along with # class average (constant) # constant information classAvg = 80 # user input. Get info from user fName = "Al" lName = "K" Id = "990123456" final = 90 #--- Format information and display --- # create the bar bar = "+" + 48*"-" + "+" lenBar = len( bar ) # compute the number of dashes noSpaces = lenBar - len( fName ) -len(lName )-len(Id) - 6 spaces = " " * noSpaces # create the scale scale = " 00...10...20...30...40...50...60...70...80...90...100" # display the information print( bar ) print( "|" + fName, lName, spaces, Id, "|" ) print( bar ) print() print( scale ) # the length of the bar for the bar-graph, in number of characters # is 1/2 the actual grade. So divide the grade by half to get the # number of chars. We use // to get the integer part of the result print( "grade:", (final//2) * "#" ) print( "class:", (classAvg//2) * "#" )
Monday, 9/21/15
Version 1 of Teller Machine program
# tellerMachine.py # D. Thiebaut # A program that simulates a teller machine, where user enters an amount of # dollars, and program figures out the number of bills to return. # get the amount amount = eval( input( "Please enter amount: " ) ) amount = int( amount ) print() # break down into bills no20s = amount // 20 # how many 20s go into amount amount = amount % 20 # what is left over after giving out 20s go back into amount no10s = amount // 10 amount = amount % 10 no5s = amount //5 no1s = amount % 5 # display the results print( "Amount withdrawn = ", amount ) print( "Please lift your keyboard and find: " ) print( no20s, "$20-bill(s)" ) print( no10s, "$10-bill(s)" ) print( no5s, "$5-bill(s)" ) print( no1s, "$1-bill(s)" )
Version 2, submitted by Shirui Cheng, who figured out that it was a perfect opportunity to use a loop!
# Teller machine simulator # Shirui Cheng # get the input amount = eval(input ("How much money do you want to withdraw? ")) # break down in $20-, $10-, $5-, and $1-bills # and print the result at every step for bill in (20, 10, 5, 1): no = amount // bill amount = amount % bill print (no, "$", bill, "bill(s)")
Wednesday, 9/23/15
# averageAge.py # D. Thiebaut # # Example of how one would go about computing # the average value of a list of numbers. # def main(): # initialize variables sum = 0 count = 0 # loop through a list of ages and compute the total sum # of the ages, and the number of values in the list. for age in [20, 19, 21, 20, 21, 29, 17]: sum = sum + age count = count + 1 # compute the average, displays quantities of interest print( "-" * 30 ) print( "average = ", sum/count ) main()
Accumulating Strings
# stringPatterns.py # D. Thiebaut # print a string of 5 alternating patterns. def main(): # define 2 different patterns pat1 = "**" pat2 = "++" # create an empty string result = "" # loop 5 times (we want a string of 5 alternating patterns) for i in range( 5 ): # add a new pattern to the string result = result + pat1 # switch the patterns around pat1, pat2 = pat2, pat1 # done with the loop! Print string of patterns print( result ) main()
Friday, 9/25/15
# averageAge.py # D. Thiebaut # # Example of how one would go about debugging a simple # program and reveal how the loop works. # def main(): # initialize variables sum = 0 count = 0 print( "sum = {0:1} count = {1:1}".format( sum, count ) ) input() # loop through a list of ages and compute the total sum # of the ages, and the number of values in the list. for age in [20, 19, 21, 20, 21, 29, 17]: sum = sum + age count = count + 1 print( "age = {0:5} sum = {1:5} count = {2:5}".format( age, sum, count ) ) input() # compute the average, displays quantities of interest print( "-" * 30 ) print( "sum = ", sum ) print( "count = ", count ) print( "average = ", sum/count ) main()
Wed., 9/30/15
# exercises 9/30/15 def main(): # Exercise #1 fName = "SOPHIA" lName = "smith" fullName = fName + " " + lName print( fullName.title().center( 60 ) ) print( "\n", "-"*60, "\n\n", sep="" ) # Exercise #2 # Define the string with multiple lines book = """Ulysses James Joyce Stately, plump Buck Mulligan came from the stairhead, bearing a bowl of lather on which a mirror and a razor lay crossed. """ # split the book into a list of lines lines = book.splitlines() # assign different lines to variables bookTitle = lines[0] author = lines[1] sentence = lines[2] + lines[3] + lines[4] # this next statement is too sophisticated for now #sentence = " ".join( lines[2: ] ) # display the result print( bookTitle.upper().center( 60 ) ) print( author.title().center( 60 ) ) print( ) print( sentence ) main()
Fri., 10/2/15
# Using split() # ------------------------- poem = """Chocolate Chocolate is the first luxury. It has so many things wrapped up in it: Deliciousness in the moment, childhood memories, and that grin-inducing feeling of getting a reward for being good. --Mariska Hargitay""" # display each line centered in 60 spaces. # first line all uppercase. # last line right justified in 60 spaces. lines = poem.split( "\n" ) #print( lines ) # ----------------------------------------------------------------------- # (remove the triple double-quotes to energize the code section) print( lines[0].upper().center(60) ) for line in lines[1: ]: print( line.center( 60 ) ) # ----------------------------------------------------------------------- print( "-" * 60 ) lines[0] = lines[0].upper() for line in lines[0:3]+lines[4:]: print( line.center(60) )
Another Example
# ------------------------- # Another Example # ------------------------- def printBar(): print( 60 * '-' ) def sayHello(): print( ) print( "Hello, and welcome!" ) print( ) def main(): for i in range( 10 ): printBar() sayHello() printBar() main()
Happy Birthday
# ------------------------------------------ # Sing Happy Birthday to some Minions # ------------------------------------------ def singHappyBirthday( minion ): print( "Happy birthday to you\n" * 2, end="" ) print( "Happy birthday, dear", minion ) print( "Happy birthday to you" ) print() def main(): #singHappyBirthday( "Dave" ) #singHappyBirthday( "Stuart" ) minions = "Dave, Stuart, Jerry, Jorge, Tim, Mark, Phil, Kevin, Jon" minions = minions.split( ", " ) #print( minions ) for minion in minions: singHappyBirthday( minion.strip() ) main()
Mon. 10/5/15
Converting Temperatures
# F = C * 9 / 5 + 32
def convert( c ):
return int( c * 9/5 + 32 )
def main():
for C in [ 0, 32, 100 ] :
fahr = convert( C )
print( fahr )
main()
Transforming dates
def singHappyBirthday( minion ):
print( "minion = ", minion )
#print( "Happy birthday to you\n" * 2, end="" )
#print( "Happy birthday, dear", minion )
#print( "Happy birthday to you" )
#print()
def worker0( ):
return "clap " * 10
def worker1( num1 ):
return num1 * 2 + 1
def worker2( n ):
return n % 10
def worker3( p ):
p = worker1( p )
p = worker2( p )
return p
def dateConvert( date ):
"""converts a date in the form "2 Jan 2010" into
a date of the form 01022010"
"""
# split the string into day, month, and year
fields = date.split()
day = fields[0]
month = fields[1]
year = fields[2]
#print( day, month, year )
# if the day is less than 10, add a 0 in front of it
day = ( '0' + day )[-2: ]
#print( day, month, year )
# find where the month is located in a string of 3-letter
# months. If the string is "Jan", then the location will
# be 0. If the string is "Feb", then the location will be 3,
# etc.
months = "janfebmaraprmayjunjulaugsepoctnovdec"
index = months.find( month.lower() )
# divide by 3 to find the index in the form 0, 1, 2,... 11.
# and add 1 to make this 1, 2,... 12
monthDigit = index//3 + 1
# transform this digit into a string, with a 0 in front
# in case the digit is less than 10.
monthDigit = "{0:02}".format( monthDigit )
#print( day, month, year, monthDigit )
# return the formatted string
return "{0:1}{1:1}{2:1}".format( monthDigit, day, year )
def main():
for date in [ "1 Jan 2010", "2 Mar 1900", "31 Dec 2015" ]:
print( dateConvert( date ) )
main()
- Output:
01012010 03021900 12312015
Fri. 10/9/15
Once More: the Teller Machine program
def getAmount():
amount = eval( input( "Amount? " ) )
return abs( amount )
def breakDown( amount, denom ):
noBills = amount // denom
newAmount = amount % denom
return noBills, newAmount
def display(orgAmount, No20s, No10s, No5s, No1s ):
print( orgAmount, No20s, No10s, No5s, No1s )
return
def main():
# get amount from user
amount = getAmount( )
orgAmount = amount # keep value of original amount
# get Number of $20-, $10, $5-, and $1-bills
No20s, amount = breakDown( amount, 20 )
No10s, amount = breakDown( amount, 10 )
No5s, amount = breakDown( amount, 5 )
No1s, amount = breakDown( amount, 1 )
# display result
display( orgAmount, No20s, No10s, No5s, No1s )
main()
Flipping DNA
def getSentence( ):
sentence = input( "Enter a list of words: " )
words = sentence.split( )
for i in range( len( words ) ):
#print( "i = ", i, "words = ", words )
#print( "words[i] = ", words[i] )
#print( "words[i].capitalize() = ", words[i].capitalize() )
words[i] = words[i].capitalize()
#print( "i = ", i, "words = ", words )
#print()
return words
def flip( DNA ):
newDNA = DNA.replace( "A", "t" ).replace( "T", "a" )
newDNA = newDNA.replace( "G", 'c' ).replace( "C", 'g' )
return newDNA.upper()
def main():
listWords = getSentence( )
print( "list = ", listWords )
print( "AAACGTTTAG", flip( "AAACGTTTAG" ), sep="\n" )
main()