Move the last line of this program to the top, so the function call appears before the definitions. Run the program and see what error message you get.
Move the function call back to the bottom and move the definition of print_lyrics after the definition of repeat_lyrics. What happens when you run this program?
def print_lyrics():
print "I'm a lumberjack, and I'm okay."
print "I sleep all night and I work all day."
def repeat_lyrics():
print_lyrics()
print_lyrics()
repeat_lyrics()
Python provides a built-in function called len that returns the length of a string, so the value of len('allen') is 5. Write a function named right_justify that takes a string named s as a parameter and prints the string with enough leading spaces so that the last letter of the string is in column 70 of the display.
>>> 'right_justify('allen')
allen
A function object is a value you can assign to a variable or pass as an argument. For example, do_twice is a function that takes a function object as an argument and calls it twice:
def do_twice(f):
f()
f()
Here’s an example that uses do_twice
to call a function named print_spam
twice.
def print_spam():
print 'spam'
do_twice(print_spam)
Type this example into a script and test it. Modify do_twice so that it takes two arguments, a function object and a value, and calls the function twice, passing the value as an argument. Write a more general version of print_spam, called print_twice, that takes a string as a parameter and prints it twice. Use the modified version of do_twice to call print_twice twice, passing 'spam' as an argument. Define a new function called do_four that takes a function object and a value and calls the function four times, passing the value as a parameter. There should be only two statements in the body of this function, not four. Solution: http://thinkpython.com/code/do_four.py.
This exercise can be done using only the statements and other features we have learned so far. Write a function that draws a grid like the following:
+ - - - - + - - - - +
| | |
| | |
| | |
| | |
+ - - - - + - - - - +
| | |
| | |
| | |
| | |
+ - - - - + - - - - +
Hint: to print more than one value on a line, you can print a comma-separated sequence:
print '+', '-'
If the sequence ends with a comma, Python leaves the line unfinished, so the value printed next appears on the same line.
print '+',
print '-'
The output of these statements is '+ -'
.
A print statement all by itself ends the current line and goes to the next line.
Write a function that draws a similar grid with four rows and four columns.
We are going to extend Exercise 5 so that it can print grids n x n grids for any n. The steps are:
1. Write a function `get_line(symbol1, symbol2, n)` that returns a string such that `symbol1` is printed followed by four copies of `symbol2`, repeat `n` times. Finally, ensure that all symbols are sepearted by spaces. For example:
>>> print get_line('+', '-', 6)
+ - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
2. Write a function `get_row(n)` that returns one single row of the grid as a single string. Hint: use '\n'. For example,
>>> r = get_row(4)
>>> r
'+ - - - - + - - - - + - - - - + - - - - +\n| | | | |\n| | | | |\n| | | | |\n| | | | |\n'
>>> print r
+ - - - - + - - - - + - - - - + - - - - +
| | | | |
| | | | |
| | | | |
| | | | |
3. Write a function `print_grid(n)` that returns the complete complete of `n` rows and `n` columns.