Существует два основных типа ошибок в программировании: синтаксис и алгоритм . Ваша программа страдает от обоих. Мы можем довольно легко исправить ваши синтаксис ошибок:
from graphics import *
def cantor_set(win, x, y, h, length):
if length < 2:
return
line = Line(Point(x, y), Point(x + length, y))
line.setWidth(20)
line.draw(win)
cantor_set(win, 2 * x + 3, y + h, h, length // 18)
cantor_set(win, 2 * x + 12, y + h, h, length // 18)
cantor_set(win, 2 * x + 6, y + h, h, length // 18)
cantor_set(win, 2 * x + 15, y + h, h, length // 18)
def cantor_set_starter(length):
cantor_set(win, 5, 20, 50, length)
win = GraphWin("Cantor Set", 800, 200)
cantor_set_starter(790)
win.getMouse()
win.close()
Но так как в алгоритме имеется ошибка , он не рисует канарно-подобный граф. Чтобы помочь вам исправить это, нам нужно знать больше о том, где вы получили уравнение системы итерированных функций и другие детали. Если цель состоит в том, чтобы просто нарисовать набор Кантора, мы можем изменить вашу программу для этого, в основном, выбрасывая код и корректируя математику в том, что осталось:
from graphics import *
def cantor_set(win, x, y, height, length):
if length < 2:
return
line = Line(Point(x, y), Point(x + length, y))
line.setWidth(height / 2)
line.draw(win)
length /= 3
cantor_set(win, x, y + height, height, length)
cantor_set(win, x + 2 * length, y + height, height, length)
win = GraphWin("Cantor Set", 800, 300)
cantor_set(win, 5, 20, 50, 790)
win.getMouse()
win.close()
![enter image description here](https://i.stack.imgur.com/X4CeZ.png)