【发布时间】:2019-02-04 14:57:06
【问题描述】:
我正在使用 Expyriment 包设计一个实验。有两个盒子,我给它们随机颜色,但它们必须彼此不同。我使用for循环和枚举来循环遍历:
color = [(0, 76, 153), (204, 0, 0), (0, 153, 0), (255, 230, 0)]
for i, x in enumerate(color):
print(color[i])
print(random.choice(color.remove(color[i])))
从这里出现了 2 个问题,我删除的元组永远消失了,我得到了一个 TypeError: object of type 'NoneType' has no len()
我正在寻找一种方法来临时删除一个元组以进行循环但找不到它。
另外,当我尝试使用 pop print(random.choice(color.pop(i))) 时,
它没有给我一个错误,但它只是打印 int 而不是元组。另外,我弹出的对象仍然永远消失了。
完整代码>
color = [(0, 76, 153), (204, 0, 0), (0, 153, 0), (255, 230, 0)]
letter = ('b', 'r', 'g', 'y')
for i, x in enumerate(color):
frame = stimuli.Canvas((600, 600))
sti = stimuli.TextLine(letter[i], text_bold=True, text_colour=misc.constants.C_WHITE,
text_size=100, text_font='calibri')
positions = (200, -200)
n = (0, 1)
ac = random.choice(n) # randomize the place of true box
sti_squ_1 = stimuli.Rectangle((100, 100), colour=color[i], position=(positions[ac], -200)) # true box
sti_squ_2 = stimuli.Rectangle((100, 100), colour=color[random.choice(color.remove(color[i]))], position=(positions[1 - ac], -200))
【问题讨论】:
-
你在哪里使用
x? -
"...'NoneType' 没有 len()"。我没有看到您在代码中使用
len。 -
为什么不在进入for循环之前删除你不想选择的特定的?
-
我也需要遍历其他列表,所以我使用 i 和 x。我应该发布整件事吗?
-
是的,您应该发布足够的代码,以便我们可以在满足您所有要求的情况下重现您的问题。
标签: python list for-loop random tuples