您可以使用itertools.cycle的算法循环使用任意数量的颜色:from graphics import *
def cycle(iterable):
"""
Python equivalent of C definition of cycle(), from
https://docs.python.org/3/library/itertools.html#itertools.cycle
"""
saved = []
for element in iterable:
yield element
saved.append(element)
while saved:
for element in saved:
yield element
def drawPatch(win, x, y, colour):
for i in range(100, 0, -10):
rectangle = Rectangle(Point(x + i, y + (100 - i)), Point(x, y + 100))
if (i % 20) == 0:
rectangle.setFill('white')
else:
rectangle.setFill(colour)
rectangle.setOutline("") # no outline
rectangle.draw(win)
def drawPatchwork():
width = int(input("Enter width: "))
height = int(input("Enter height: "))
colours = cycle(map(str.strip, input("Enter your colours: ").split(',')))
win = GraphWin("Draw Patch", width * 100, height * 100)
for y in range(0, height * 100, 100):
for x in range(0, width * 100, 100):
drawPatch(win, x, y, next(colours))
win.getMouse()
win.close()
drawPatchwork()
用法
^{pr2}$
输出