Difference between revisions of "CSC111 Lab 6 2018"

From dftwiki3
Jump to: navigation, search
(Moodle Submission)
(Moodle Submission)
Line 279: Line 279:
 
<br />
 
<br />
 
<showafterdate after="20180310 06:00>
 
<showafterdate after="20180310 06:00>
 +
 
=Solution Program=
 
=Solution Program=
 
<br />
 
<br />

Revision as of 16:06, 4 March 2018

D. Thiebaut (talk) 12:27, 4 March 2018 (EST)


This lab deals, once again, with functions. Many functions, some receiving no parameters, some receiving several parameters, some returning nothing, some returning values. The goal of this lab is for you to feel comfortable creating functions that will perform simple tasks that can vary in



Problem 1


Write a function (in Idle or in the console) called bar() that prints a line of 30 #-characters.

>>> bar()
##############################


Problem 2


Create a new function called bar2() that receives the number of hash-tags and prints a line of that many #-signs.


>>> bar2( 1 )
#
>>> bar2( 10 )
##########
>>> bar2( 5 )
#####
>>> 


Problem 3


Create a new function called bar3() that receives the number of #-signs and how many to print.

>>> bar3( 10, '#' )
##########
>>> bar3( 1, 'A' )
A
>>> bar3( 5, '-o' )
-o-o-o-o-o
>>> 


Problem 4


Modify the for-loop below, replacing the '?' symbols with the appropriate expressions, so that uses the loop prints the series of lines shown.

>>> for i in range( ?, ? ):
	bar3( ?, '+' )

	
+
++
+++
++++
>>> 


Problem 5


First, run this for-loop and observe what it does:

>>> symbols = [ '#', '+', 'o', '$' ]
>>> for i in range( len( symbols ) ):
	print( symbols[i] )


Similarly to what you did in Problem 4, modify the code below so that it displays what is shown...

>>> symbols = [ '#', '+', 'o', '$' ]
>>> for i in range( len( ? ) ):
	bar3( ?, ? )

	
#
++
ooo
$$$$


Problem 6


Create a new function called bar4() that receives the number of symbols to print on one line, the symbol to use, and the number of lines to print.


>>> bar4( 3, 10, '#' )
##########
##########
##########
>>> bar4( 2, 5, '+' )
+++++
+++++
>>> bar4( 0, 5, 'o' )
>>> bar4( 3, 0, '+' ) 



>>> 


Problem 7


Did you think of using bar3() in your solution for bar4() above?
Write a function called square() that receives a number and returns its square. Make sure it behaves the same as the function square() used in the example below.

>>> square( 5 )
25
>>> a = 3
>>> square( a )
9
>>> square( square( 2 ) )
16
>>> for i in range( 1, 5 ): 
       print( "square(", i, ")=", square(i) )

	
square( 1 )= 1
square( 2 )= 4
square( 3 )= 9
square( 4 )= 16
>>> 


Problem 8


Write a function called cube() that receives a number as a parameter, and that returns the cube of that number (or that number multiplied by itself 3 times). Make cube() use square() when it computes its returned value.

>>> a = cube( 3 )
>>> b = cube( 4 )
>>> print( "a = ", a, " b = ", b )
a =  27  b =  64


Problem 9


Write a function called sumSquareCube() that receives a number as a parameter, and that returns the sum of the square and the cube of that number. So, if the functions gets 3, it returns 3*3 + 3*3*3.

Your function must use square() and cube() that you have defined previously.

>>> sumSquareCube( 2 )
12
>>> sumSquareCube( 3 )
36
>>> sumSquareCube( 0 )
0
>>> sumSquareCube( 4 )
80
>>> 


Problem 10


Write a function called firstOf() that receives a list of strings as a parameter and returns the first element of the list. You may assume that the list will always contain at least 1 element.

>>> farm = [ "dog", "cat", "mouse", "pig" ]
>>> firstOf( farm )
'dog'
>>> firstOf( [10, 5, 1, 20, 100] )
10
>>> animal = firstOf( farm )
>>> print( animal )
dog
>>> firstOf( farm[1: ] )
'cat'
>>>


Problem 11


Preparation


First play with the split() method to refresh your understanding of how it works. Essentially it cuts strings into a list of strings using a special character or string as a divider.

>>> sentence = "The quick red fox jumped over the dog"
>>> words = sentence.split( ' ' )
>>> words
???
>>> sentence = "    the quick red    fox   "
>>> words = sentence.split( ' ' ) # that's a space between quotes
>>> words
???
>>> sentence
'    the quick red    fox   '
>>> sentence.split() # if no character is specified, splits on whitespace
???
>>> sentence = "Alicia,Grant,2019,Ducket"
>>> words = sentence.split( ',' )
>>> words
????
>>>

Some explanations
When you do not provide a parameter to split(), it splits on groups of whitespace characters. Whitespace characters are the space, the return character ('\n'), and the tab character.

" if you split on a space ' ' and the string has long groups of spaces, then you will get a list with many empty strings. In such cases it is best to not provide anything an split on whitespace.

Problem


Write a function called firstWord() that is given a string containing many words separated by spaces, and that returns the first word of the string.

>>> print( "first word: ", firstWord( "Hello CSC111!" ) )
first word:  Hello
>>> sentence = "    The quick red fox    "
>>> print( "first word: ", firstWord( sentence ) )
first word:  The
>>> farm = [ "dog barks", "cat hisses", "


Problem 12


Reviewing appending to lists


You can append items to a list using the .append() method. Play with the following example statements in the console. Do not limit your self to just these statements. Change them. Try new ones...

>>> farm = [ "dog", "pig", "hen" ]
>>> farm
???
>>> farm.append( "cat" )
>>> farm
???
>>> nums = [ ]
>>> nums
[]
>>> nums.append( 3 )
>>> nums
???
>>> nums.append( 5 )
>>> nums
???
>>> nums.append( 10 )
>>> nums
???
>>> tenNums = [ ]
>>> for i in range( 10 ): 
	tenNums.append( i )

	
>>> tenNums
???
>>> 


Problem 12


Write a function called listFirstWords() that receives a list of sentences (strings with space-separated words), and returns a list of all the first words of each sentence.

parag = """Anna class of 18
           Lujun class of 17
           Vasanta class of 20"""
students = listFirstWords( parag )
print( "students = ", students )


Moodle Submission


Challenge Of the Day

QuestionMark5.jpg
  • Submit your solution for Problem 12.




<showafterdate after="20180310 06:00>

Solution Program


# lab6Solution.py
# D. Thiebaut

def bar():
    print( 30 * '#' )

def bar2( numChar ):
    print( numChar * '#' )

def bar3( numChar, ch ):
    print( numChar * ch )

def bar4( numLines, numChar, ch ):
    for i in range( numLines ):
        bar3( numChar, ch )

def square( x ):
    return x * x

def cube( x ):
    # return x * x * x
    return square( x ) * x

def sumSquareCube( x ):
    return square( x ) + cube( x )

def firstOf( list1 ):
    return list1[0]

def firstWord( string ):
    words = string.split()
    return words[0]

def listFirstWords( paragraph ):
    lines = paragraph.split( "\n" )
    first = [ ]
    for line in lines:
        first.append( firstWord( line ) )
    return first

def main():
    bar()
    bar2( 10 )
    bar2( 1 )
    bar2( 5 )
    bar3( 6, 'a' )
    bar3( 1, '#' )
    bar3( 5, '-o' )

    for i in range( 1, 5 ):
        bar3( i, '+' )

    symbols = [ '#', '+', 'o', '$' ]
    for i in range( len( symbols ) ):
        bar3( i+1, symbols[i] )
        
    bar4( 3, 10, '#' )

    for i in range( 1, 5 ):
        print( "square(", i, ")=", square(i) )

    print( "sumSquareCube(", 3, ")=",
           sumSquareCube( 3 ) )
    
    farm = ["dog", "hen", "pig", "duck" ]
    animal = firstOf( farm )
    print( "first animal = ", animal )

    word = firstWord( "hello there CSC111!" )
    print( "first word=", word )

    sentence = "  the quick red fox   "
    word = firstWord( sentence )
    print( "first word=", word )

    parag = """Anna class of 18
              Lujun class of 17
              Vasanta class of 20"""
    students = listFirstWords( parag )
    print( "students = ", students )
    
main()