В настоящее время я завершаю задание колледжа. Мы использовали первый модуль John Zelle graphics.py
для первого семестра.Нужна помощь в реорганизации этой функции
Задача состояла в том, чтобы построить два разных шаблона, а затем выложить их в определенном дизайне, автоматически настраивая в зависимости от того, было ли окно 500 x 500, 700 x 700 or 900 x 900
пикселей.
Я выполнил задачу, однако одна большая часть моего кода очень неэффективна и длинна, поэтому это не идеально.
Ниже приведен код, который долго и неэффективно:
def DrawPattern(width,size,win,colour):
if size == 5:
for x in range(0,width,100):
drawCircleExpanse(win,x,400,colour)
for j in range(100,400,100):
drawCircleExpanse(win,j,300,colour)
drawCircleExpanse(win,200,200,colour)
for j in range(100,400,100):
drawCircleExpanse(win,j,100,colour)
for x in range(0,width,100):
drawCircleExpanse(win,x,0,colour)
if size == 7:
for x in range(0,width,100):
drawCircleExpanse(win,x,width-100,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,width-200,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-300,colour)
drawCircleExpanse(win,300,300,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,100,colour)
for x in range(0,width,100):
drawCircleExpanse(win,x,0,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-500,colour)
if size == 9:
for x in range(0,width,100):
drawCircleExpanse(win,x,width-100,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,width-200,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-300,colour)
for y in range(300,width-300,100):
drawCircleExpanse(win,y,width-400,colour)
drawCircleExpanse(win,400,400,colour)
for j in range(100,width-100,100):
drawCircleExpanse(win,j,100,colour)
for x in range(0,width,100):
drawCircleExpanse(win,x,0,colour)
for i in range(200,width-200,100):
drawCircleExpanse(win,i,width-700,colour)
for y in range(300,width-300,100):
drawCircleExpanse(win,y,width-600,colour)
Переменная size
принимает ввод пользователя; например 5, 7 or 9
. Это означает либо 500 x 500, 700 x 700 or 900 x 900
. Аналогично colour
, который просто изменит цвет на один из вариантов пользователя.
Этот код, будет производить следующий шаблон, с размером 5
который переводит к 500 x 500
:
drawCircleExpanse
функции, которая строит сам шаблон, содержит следующий код:
def drawCircleExpanse(win,x,y,colour):
rad = 50
for c in range(10):
circle = Circle(Point(50+x,(50+(c * 10)/2)+y), rad)
circle.setOutline(colour)
circle.draw(win)
rad -= 5
Я был бы очень благодарен, если бы кто-то мог помочь в сокращении моего массивного блока кода.
Я не уверен, что этот тип вопроса на тему здесь. Я никогда не спрашивал об этом SE раньше, но, возможно, codereview SE - лучшее место, чтобы задать этот вопрос? Я бы дважды проверял правила по темам там до публикации, но похоже, что это может быть лучше. – Lexi