Проблем с turtle graphic

Есть код на питон :

import turtle as t

t = t.Turtle()
t.screen.setup(800, 800)
t.speed(0)


def cell():  # рисует оси X и Y
    t.goto(-400, 0)
    t.goto(400, 0)
    t.penup()
    t.goto(0, -400)
    t.pendown()
    t.goto(0, 400)


cell()

x1 = -10  # начало графика
x2 = 10  # конец графика
shag = 0.1  # шаг рисовки.

mashtab = 34  # масштаб рисунка.

x = x1
t.penup()
while x <= x2:
    y = 1 / x
    t.goto(x * mashtab, y * mashtab)
    t.pendown()
    x += shag

t.screen.mainloop()

Почему он не рисует часть графика? и только ли у меня такая проблема?


Ответы (1 шт):

Автор решения: Amgarak

Когда X устремляется к 0, то значение Y улетает в бесконечность, а черепашка такой резкой смены координат не вывозит. Так что предлагаю просто отфильтровать этот резкий скачек и поднять в этом моменте перо, что бы не пытаться соединить эти две точки.

import turtle as t

t = t.Turtle()
t.screen.setup(800, 800)
t.speed(0)

def cell():  # рисует оси X и Y
    t.goto(-400, 0)
    t.goto(400, 0)
    t.penup()
    t.goto(0, -400)
    t.pendown()
    t.goto(0, 400)

cell()

x1 = -10  # начало графика
x2 = 10  # конец графика
shag = 0.1  # шаг рисовки.

mashtab = 34  # масштаб рисунка.

x = x1
t.penup()
while x <= x2:
    y = 1 / x
    if abs(y * mashtab ) > 400:  # слишком большой Y -> пропускаем
        print(y) # -53218311697140.28
        print(x) # -1.8790524691780774e-14
        x += shag
        t.penup()  
        continue
    t.goto(x * mashtab , y * mashtab )
    t.pendown()  
    x += shag

t.screen.mainloop()

введите сюда описание изображения

→ Ссылка