Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

How can I write a program in python that uses turtle graphics to display the cha

ID: 3872558 • Letter: H

Question

How can I write a program in python that uses turtle graphics to display the characters in the ASCII character table from ! To ~ with ten characters per line that are separated by exactly one space? And could you also explain each line of code so I will know why you did what you did. How can I write a program in python that uses turtle graphics to display the characters in the ASCII character table from ! To ~ with ten characters per line that are separated by exactly one space? And could you also explain each line of code so I will know why you did what you did. How can I write a program in python that uses turtle graphics to display the characters in the ASCII character table from ! To ~ with ten characters per line that are separated by exactly one space? And could you also explain each line of code so I will know why you did what you did.

Explanation / Answer

That is hell lot of characters to draw.Code for letters is given below.You will get the what is happening. The description is written in these functions.

from swampy.TurtleWorld import *

from polygon import circle, arc


def fdlt(t, n, angle=90):
"""forward and left"""
fd(t, n)
lt(t, angle)

def fdbk(t, n):
"""forward and back, ending at the original position"""
fd(t, n)
bk(t, n)

def skip(t, n):
"""lift the pen and move"""
pu(t)
fd(t, n)
pd(t)

def stump(t, n, angle=90):
"""make a vertical line and leave the turtle at the top, facing right"""
lt(t)
fd(t, n)
rt(t, angle)

def hollow(t, n):
"""move the turtle vertically and leave it at the top, facing right"""
lt(t)
skip(t, n)
rt(t)


# LEVEL 2 PRIMITIVES use primitives from Levels 0 and 1
# to draw posts (vertical elements) and beams (horizontal elements)
# Level 2 primitives ALWAYS return the turtle to the original
# location and direction.

def post(t, n):
"""make a vertical line and return to the original position"""
lt(t)
fdbk(t, n)
rt(t)

def beam(t, n, height):
"""make a horizontal line at the given height and return."""
hollow(t, n*height)
fdbk(t, n)
hollow(t, -n*height)


def hangman(t, n, height):
"""make a vertical line to the given height and a horizontal line
at the given height and then return.
This is efficient to implement, and turns out to be useful, but
it's not so semantically clean."""
stump(t, n * height)
fdbk(t, n)
lt(t)
bk(t, n*height)
rt(t)

def diagonal(t, x, y):
"""make a diagonal line to the given x, y offsets and return"""
from math import atan2, sqrt, pi
angle = atan2(y, x) * 180 / pi
dist = sqrt(x**2 + y**2)
lt(t, angle)
fdbk(t, dist)
rt(t, angle)

def vshape(t, n, height):
diagonal(t, -n/2, height*n)
diagonal(t, n/2, height*n)

def bump(t, n, height):
"""make a bump with radius n at height*n
"""
stump(t, n*height)
arc(t, n/2.0, 180)
lt(t)
fdlt(t, n*height+n)


"""
The letter-drawing functions all have the precondition
that the turtle is in the lower-left corner of the letter,
and postcondition that the turtle is in the lower-right
corner, facing in the direction it started in.

They all take a turtle as the first argument and a size (n)
as the second. Most letters are (n) units wide and (2n) units
high.

"""

def draw_a(t, n):
diagonal(t, n/2, 2*n)
beam(t, n, 1)
skip(t, n)
diagonal(t, -n/2, 2*n)

def draw_b(t, n):
bump(t, n, 1)
bump(t, n, 0)
skip(t, n/2)

def draw_c(t, n):
hangman(t, n, 2)
fd(t, n)

def draw_d(t, n):
bump(t, 2*n, 0)
skip(t, n)

def draw_ef(t, n):
hangman(t, n, 2)
hangman(t, n, 1)

def draw_e(t, n):
draw_ef(t, n)
fd(t, n)

def draw_f(t, n):
draw_ef(t, n)
skip(t, n)

def draw_g(t, n):
hangman(t, n, 2)
fd(t, n/2)
beam(t, n/2, 2)
fd(t, n/2)
post(t, n)

def draw_h(t, n):
post(t, 2*n)
hangman(t, n, 1)
skip(t, n)
post(t, 2*n)

def draw_i(t, n):
beam(t, n, 2)
fd(t, n/2)
post(t, 2*n)
fd(t, n/2)

def draw_j(t, n):
beam(t, n, 2)
arc(t, n/2, 90)
fd(t, 3*n/2)
skip(t, -2*n)
rt(t)
skip(t, n/2)

def draw_k(t, n):
post(t, 2*n)
stump(t, n, 180)
vshape(t, 2*n, 0.5)
fdlt(t, n)
skip(t, n)

def draw_l(t, n):
post(t, 2*n)
fd(t, n)

def draw_n(t, n):
post(t, 2*n)
skip(t, n)
diagonal(t, -n, 2*n)
post(t, 2*n)

def draw_m(t, n):
post(t, 2*n)
draw_v(t, n)
post(t, 2*n)

def draw_o(t, n):
skip(t, n)
circle(t, n)
skip(t, n)

def draw_p(t, n):
bump(t, n, 1)
skip(t, n/2)

def draw_q(t, n):
draw_o(t, n)
diagonal(t, -n/2, n)

def draw_r(t, n):
draw_p(t, n)
diagonal(t, -n/2, n)

def draw_s(t, n):
fd(t, n/2)
arc(t, n/2, 180)
arc(t, n/2, -180)
fdlt(t, n/2, -90)
skip(t, 2*n)
lt(t)

def draw_t(t, n):
beam(t, n, 2)
skip(t, n/2)
post(t, 2*n)
skip(t, n/2)

def draw_u(t, n):
post(t, 2*n)
fd(t, n)
post(t, 2*n)

def draw_v(t, n):
skip(t, n/2)
vshape(t, n, 2)
skip(t, n/2)

def draw_w(t, n):
draw_v(t, n)
draw_v(t, n)

def draw_x(t, n):
diagonal(t, n, 2*n)
skip(t, n)
diagonal(t, -n, 2*n)

def draw_v(t, n):
skip(t, n/2)
diagonal(t, -n/2, 2*n)
diagonal(t, n/2, 2*n)
skip(t, n/2)

def draw_y(t, n):
skip(t, n/2)
stump(t, n)
vshape(t, n, 1)
rt(t)
fdlt(t, n)
skip(t, n/2)

def draw_z(t, n):
beam(t, n, 2)
diagonal(t, n, 2*n)
fd(t, n)

def draw_(t, n):
# draw a space
skip(t, n)

if __name__ == '__main__':
world = TurtleWorld()

# create and position the turtle
size = 20
bob = Turtle()
bob.delay = 0.01

for f in [draw_h, draw_e, draw_l, draw_l, draw_o]:
f(bob, size)
skip(bob, size)
  
wait_for_user()

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote