import turtle def punti(tupla): return lambda x: dict(tupla)[float(x)] class varie(): def vai(self, x, y): self.pu() self.goto(x,y) self.pd() class freccia(turtle.Pen, varie): def __init__(self): super(freccia, self).__init__() self.speed(0) self.shape("triangle") self.shapesize(0.5) class grafico(turtle.Pen, varie): def __init__(self, X = 10, Y = 10): super(grafico, self).__init__() turtle.title("Grafico") self.X = X self.Y = Y self.canvas = turtle.getcanvas() self.assi() self.frecce() def assi(self): turtle.setworldcoordinates(-(self.X+2), -(self.Y+2), self.X+2, self.Y+2) self.hideturtle() self.speed(0) self.vai(-self.X, 0) self.fd(self.X*2) self.vai(0, -self.Y) self.lt(90) self.fd(self.Y*2) def frecce(self): a = freccia() a.vai(self.X, 0) a.write(" x", font=("helvetiva",16)) b = freccia() b.lt(90) b.vai(0, self.Y) b.write(" y", font=("helvetiva",16)) def disegna(self, funzione, inizio, fine, colore="blue"): medio = 2/self.X self.color(colore) try: self.vai(inizio,funzione(inizio)) except ZeroDivisionError: self.vai(inizio,funzione(inizio+1*medio)) for x in range(int(inizio/medio),int(fine/medio)+1): x *= medio try: self.goto(x, funzione(x)) except ZeroDivisionError: self.vai(x, funzione(x+1*medio)) def pulisci(self): self.reset() self.assi()