 # Practicing Python | Think Python: Functions – Exercises

Book: Think Python

These are my solutions for exercises in chapter “functions”.

If you have suggestions, do not hesitate to give them down below 😀

Le Code’

```[sourcecode lang="python"]
#THINK PYTHON - BOOK NAME
#CHAPTER  - "FUNCTIONS"
#COMPLETED!
'''
Exercise 3.1
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.
'''

def right_justify(s):
length_of_str = len(s) #sets the length of the given string
return (" " * leading_spaces) +  s

'''
Exercise 3.2. 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)
1. Type this example into a script and test it.
2. 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.
3. Copy the definition of print_twice from earlier in this chapter to your script.
4. Use the modified version of do_twice to call print_twice twice, passing 'spam' as an
argument.
5. 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

'''
def print_spam(value):
print(value)

def do_twice(f, value):
f(value)
f(value)

def do_four(f, value,repeat=4):
do_repeats(f, value, repeat)

def do_repeats(f, value, repeat):
for x in range(repeat):
f(value)

'''
Exercise 3.3. Note: This exercise should be done using only the statements and other features we
have learned so far.
1. 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 of
values:
print('+', '-')
By default, print advances to the next line, but you can override that behavior and put a
space at the end, like this:
print('+', end=' ')
print('-')
The output of these statements is '+ -' on the same line. The output from the next print
statement would begin on the next line.

'''

'''
Write a function that draws a similar grid with four rows and four columns.
'''

def print_grid(num_spaces = 4, height = 8, width=2):
'''
Empty columns - ! in row num_spaces * constant

'''
number_of_headers = int(round(height / num_spaces)) # round to int
for row in range(height + number_of_headers):
has_plus = row % (num_spaces  + 1)  #only when non divisible by num_spaces
if has_plus == 0:
print(("+" + "-" * num_spaces) * width + "+" )
else:  print(( "|" + " " * num_spaces )* width + "|")

#heehe cheating but okay.
print(("+" + "-" * num_spaces) * width + "+" )

[/sourcecode]```