## Chapter 3

### Exercise 5

This exercise can be done using only the statements and other features we have learned so far.

(a) Write a function that draws a grid like the following:

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +


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 ‘+ -‘. The output from the next print statement would begin on the next line.

def grid():
print('+','-','-','-','-','+','-','-','-','-','+')
print('|', ' '*7,'|', ' '*7,'|')
print('|', ' '*7,'|', ' '*7,'|')
print('|', ' '*7,'|', ' '*7,'|')
print('|', ' '*7,'|', ' '*7,'|')
print('+','-','-','-','-','+','-','-','-','-','+')
print('|', ' '*7,'|', ' '*7,'|')
print('|', ' '*7,'|', ' '*7,'|')
print('|', ' '*7,'|', ' '*7,'|')
print('|', ' '*7,'|', ' '*7,'|')
print('+','-','-','-','-','+','-','-','-','-','+')
grid()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def print_4(a):
print(a)
print(a)
print(a)
print(a)
def window_grid():
rail='+'+' -'*4+' + '+'- '*4+'+'
stile='|'+' '*9+'|'+' '*9+'|'
print(rail)
print_4(stile)
print(rail)
print_4(stile)
print(rail)

window_grid()


+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def pIntersec():
# prints an intersection point
print('+',end=' ')

def pHLine():
# prints a horizontal line segment
print('- - - -', end=' ')

def newLine():
print()

def pVerLine():
# prints a vertical line
print('|', end=' ')

def pEmptySpace():
# creates the inner empty space
print('       ', end=' ')

def gridRow(f,g):
# prints one row of the grid
f()
g()
f()
g()
f()
newLine()

def insideCell():
gridRow(pVerLine,pEmptySpace)
gridRow(pVerLine,pEmptySpace)
gridRow(pVerLine,pEmptySpace)
gridRow(pVerLine,pEmptySpace)

def printGrid():
gridRow(pIntersec,pHLine)
insideCell()
gridRow(pIntersec,pHLine)
insideCell()
gridRow(pIntersec,pHLine)

printGrid()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def line():
return '+ '+'- '*4

def space():
return '|'+' '*9

def full_line():
return line()*2+'+\n'

def full_space():
return space()*2+'|\n'

def grid():
print((full_line()+full_space()*4)*2+full_line())

grid()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def gridtwo():
print('+ - - - - + - - - - +')
print('|         |         |')
print('|         |         |')
print('|         |         |')
print('|         |         |')
print('+ - - - - + - - - - +')
print('|         |         |')
print('|         |         |')
print('|         |         |')
print('|         |         |')
print('+ - - - - + - - - - +')

gridtwo()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def print_plus():
print('+', end=' ')
def print_minus():
print('-', end=' ')
def print_pipe():
print('|', end=' ')
def print_space():
print(' ', end=' ')

def print_horz():
print_plus()
print_minus()
print_minus()
print_minus()
print_minus()
print_plus()
print_minus()
print_minus()
print_minus()
print_minus()
print_plus()
print()

def print_vert():
print_pipe()
print_space()
print_space()
print_space()
print_space()
print_pipe()
print_space()
print_space()
print_space()
print_space()
print_pipe()
print()

def print_rect():
print_horz()
print_vert()
print_vert()
print_vert()
print_vert()
print_horz()
print_vert()
print_vert()
print_vert()
print_vert()
print_horz()

print_rect()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def drawGrid():
line1 = '+ ' + '- '*4 + '+ ' + '- '*4 + '+'
line2 = '|' + ' '*9 + '|'+ ' '*9 + '|'
print(line1)
print(line2)
print(line2)
print(line2)
print(line2)
print(line1)
print(line2)
print(line2)
print(line2)
print(line2)
print(line1)

drawGrid()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

single_divider = '+ ' + '- ' * 4
single_body = '| ' + '  ' * 4
print(single_divider * 2 + '+')
print(single_body * 2 + '|')
print(single_body * 2 + '|')
print(single_body * 2 + '|')
print(single_body * 2 + '|')
print(single_divider * 2 + '+')
print(single_body * 2 + '|')
print(single_body * 2 + '|')
print(single_body * 2 + '|')
print(single_body * 2 + '|')
print(single_divider * 2 + '+')

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def grid():
print('+','- '*4,'+','- '*4,'+')
print('|', ' '*8,'|', ' '*8, '|')
print('|', ' '*8,'|', ' '*8, '|')
print('|', ' '*8,'|', ' '*8, '|')
print('|', ' '*8,'|', ' '*8, '|')
print('+','- '*4,'+','- '*4,'+')
print('|', ' '*8,'|', ' '*8, '|')
print('|', ' '*8,'|', ' '*8, '|')
print('|', ' '*8,'|', ' '*8, '|')
print('|', ' '*8,'|', ' '*8, '|')
print('+','- '*4,'+','- '*4,'+')

grid()

+ - - - -  + - - - -  +
|          |          |
|          |          |
|          |          |
|          |          |
+ - - - -  + - - - -  +
|          |          |
|          |          |
|          |          |
|          |          |
+ - - - -  + - - - -  +

def drawThisParticularGrid():
lineType1 = 2*('+' + (4*' -') + ' ') + '+\n'
lineType2 = 2*('|'+9*' ')+'|\n'
drawing = 2*(lineType1 + 4*lineType2) + lineType1
print(drawing)

drawThisParticularGrid()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

#without loops I guess
def line():
print('+', ("- " * 4),end=' ')

def space():
print('|', (" " * 8), end=' ')

def linerow():
line()
line()
print('+')

def spacerow():
space()
space()
print('|')

def printrow():
linerow()
spacerow()
spacerow()
spacerow()
spacerow()

def printgrid():
printrow()
printrow()
linerow()

printgrid()


+ - - - -  + - - - -  +
|          |          |
|          |          |
|          |          |
|          |          |
+ - - - -  + - - - -  +
|          |          |
|          |          |
|          |          |
|          |          |
+ - - - -  + - - - -  +

s1 = '+ - - - - + - - - - +'
s2 = '|         |         |'
print(s1)
print(s2)
print(s2)
print(s2)
print(s2)
print(s1)
print(s2)
print(s2)
print(s2)
print(s2)
print(s1)

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def grid1():
p = '+' #plus
m = '-' #minus
l = '|' #line
s = ' ' #space

hori = (p+s+m+s+m+s+m+s+m+s)*2 + p
sp = (l + s*9)*2 +l

print(hori)
print(sp)
print(sp)
print(sp)
print(sp)
print(hori)
print(sp)
print(sp)
print(sp)
print(sp)
print(hori)
return
#I'm sure theres a more efficient way to do this.
#If I have time I'll get back to it.

grid1()


+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def printyfunc():
print('+', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('+', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('+')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('+', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('+', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('+')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print(' ', end=' ')
print('|')
print('+', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('+', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('-', end=' ')
print('+')
printyfunc()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def horiz():
print('+ - - - - + - - - - +')
def vert():
print('|         |         |')
def box():
horiz()
vert()
vert()
vert()
vert()
horiz()
vert()
vert()
vert()
vert()
horiz()

box()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def grid_function():
print('+ - - - - + - - - - +')
print('|'+' '*9+'|'+' '*9+'|')
print('|'+' '*9+'|'+' '*9+'|')
print('|'+' '*9+'|'+' '*9+'|')
print('|'+' '*9+'|'+' '*9+'|')
print('+ - - - - + - - - - +')
print('|'+' '*9+'|'+' '*9+'|')
print('|'+' '*9+'|'+' '*9+'|')
print('|'+' '*9+'|'+' '*9+'|')
print('|'+' '*9+'|'+' '*9+'|')
print('+ - - - - + - - - - +')
grid_function()

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

def draw_window():
draw_plus();
draw_lines();
draw_lines();
draw_lines();
draw_lines();
draw_plus();
draw_lines();
draw_lines();
draw_lines();
draw_lines();
draw_plus();

def draw_lines():
print('|' + ' '*9 + '|' + ' '*9 + '|')

def draw_plus():
print('+ ' + '- '*4 + '+ ' + '- '*4 + '+')

draw_window();

+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +