Python中的随机颜色
我很难让这个程序正常运行。输出应该用我拥有的10种颜色列表中的一种随机颜色随机填充每个方块,但每个方块只填充初始颜色。我需要保持Python中的随机颜色,python,turtle-graphics,Python,Turtle Graphics,我很难让这个程序正常运行。输出应该用我拥有的10种颜色列表中的一种随机颜色随机填充每个方块,但每个方块只填充初始颜色。我需要保持pick\u color()的定义与教授的定义相同,因为他要求我们保持不变。另外,每个正方形都会逐渐变小,首先绘制最大的一个 顺便说一句,我这么问是因为教授们鼓励我这么做,但当我在学校广场上发帖时,我并没有得到有益的帮助。我已经搜索了StackOverFlow和其他来源来寻找解决方案,但没有结果 import turtle import random squares
pick\u color()
的定义与教授的定义相同,因为他要求我们保持不变。另外,每个正方形都会逐渐变小,首先绘制最大的一个
顺便说一句,我这么问是因为教授们鼓励我这么做,但当我在学校广场上发帖时,我并没有得到有益的帮助。我已经搜索了StackOverFlow和其他来源来寻找解决方案,但没有结果
import turtle
import random
squares = input("How many squares should I draw (whole numbers): ")
squares_int = int(squares)
def pick_color():
colors = ["blue","black","brown","red","yellow","green","orange","beige","turquoise","pink"]
random.shuffle(colors)
return colors[0]
random_color = pick_color()
print(random_color)
length = 400
x = -200
y = 200
for i in range(squares_int):
turtle.fillcolor(random_color)
turtle.pensize(5)
turtle.penup()
turtle.setx(x)
turtle.sety(y)
turtle.pendown()
turtle.down()
turtle.begin_fill()
turtle.forward(length)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.end_fill()
turtle.up()
length = length - 30
x = x + 15
y = y - 15
如果我能得到一两个提示就好了。我不是在寻找一个直截了当的答案。提前谢谢
pick_color
创建一个颜色列表,将其洗牌,然后返回第一个颜色,您可以选择它。相反,在顶部/全局级别定义该列表,并使用random选择一种随机颜色
turtle.fillcolor(random.choice(colors))
你必须在循环中调用它的函数,你第一次调用它,所以它永远不会改变
import turtle
import random
squares = input("How many squares should I draw (whole numbers): ")
squares_int = int(squares)
def pick_color():
colors = ["blue","black","brown","red","yellow","green","orange","beige","turquoise","pink"]
random.shuffle(colors)
return colors[0]
length = 400
x = -200
y = 200
for i in range(squares_int):
random_color = pick_color()
turtle.fillcolor(random_color)
turtle.pensize(5)
turtle.penup()
turtle.setx(x)
turtle.sety(y)
turtle.pendown()
turtle.down()
turtle.begin_fill()
turtle.forward(length)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.end_fill()
turtle.up()
length = length - 30
x = x + 15
y = y - 15
输出:
我同意@TigerhawkT3(+1)的说法,你的教授对pick_color()
的实现是垃圾。但是我不相信,random.choice()
,也不相信你的教授滥用random.shuffle()
,是最好的选择。两者的问题是,在连续调用时,您可以获得相同的颜色,这是在正方形中绘制正方形时不希望看到的颜色:
>>> import random
>>> COLORS = ['red', 'blue', 'green', 'yellow', 'black', 'pink', 'gold', 'violet', 'orange', 'magenta', 'cyan']
>>> for _ in range(10):
... print(random.choice(COLORS))
...
green
pink
red
black
violet
orange
orange
violet
yellow
yellow
>>>
我仍然会使用random.shuffle()
,尽管不是你教授的方法,还有一个附加的修复方法,即跟踪返回的颜色,以确保上一次洗牌的最后一种颜色不是新洗牌的第一种颜色:
import turtle
import random
COLORS = ["blue", "black", "brown", "red", "yellow", "green", "orange", "beige", "turquoise", "pink"]
def pick_color(colors=[], previous=[None]): # intentionally dangerous default values
if not colors:
colors.extend(COLORS)
random.shuffle(colors)
if colors[-1] == previous[0]:
colors.insert(0, colors.pop())
previous[0] = colors.pop()
return previous[0]
squares = input("How many squares should I draw (whole numbers): ")
squares_int = int(squares)
length = 400
x = -200
y = 200
turtle.pensize(5)
for i in range(squares_int):
random_color = pick_color()
turtle.fillcolor(random_color)
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
turtle.begin_fill()
for _ in range(4):
turtle.forward(length)
turtle.right(90)
turtle.end_fill()
length -= 30
x, y = x + 15, y - 15
turtle.done()
我相信这会产生比使用相同颜色的相邻方块显示的效果更好的结果:
提示:由于您只需调用选择颜色
一次,因此您只能得到一种随机颜色。非常感谢!你介意我再问一次为什么吗?我以为我在海龟身上就是这么做的。fillcolor(random_color)你第一次叫它,所以你只有一个值,它永远不会改变,这是你不想要的。明白了!我很感激help@user7433120如果我的答案能帮助您将其标记为正确,请。这是一个错误,您刚刚创建了一个较差的random.choice
。如果有人能解释这个答案的错误,使其值得否决,我很乐意改进它。我感谢您的输入;但是,我必须使用我的教授的实现和定义。