我目前正在完成大学作业。第一学期我们一直在使用 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
如果有人可以帮助缩短我的大量代码块,我将不胜感激。