Как поставить лимит на вывод одинаковых объектов в списке Python
Написал код с модулем tkinter для вывода 50 квадратов с разными цветами, а именно: красный, желтый, синий и зеленый.
Но надо сделать так чтобы не выводило 3 одинаковых цветов подряд, то есть поставить лимит на максимальное количество одинаковых объектов.
Помогите пожалуйста, прикреплю мой код снизу.
import random
from tkinter import *
colors = ['#008000', '#FF0000', '#000080', '#FFFF00']
labelColors = []
def call_generators():
for x in range(50):
color = random.choice(colors)
labelColors[x]['bg'] = color
if colors
root = Tk()
root.title('Генератор')
root.geometry('{}x{}'.format(root.winfo_screenwidth(),root.winfo_screenheight()))
root.resizable(0, 0)
cordX = 60
cordY = 120
loopY = 1
for x in range(50):
labelColor = Label(root, bg='white', borderwidth=2, relief="solid")
labelColor.place(x=cordX, y=cordY, anchor=S, width=100, height=100)
labelColors.append(labelColor)
cordX = cordX + 120
loopY = loopY + 1
if loopY > 10:
cordY = cordY + 120
cordX = 60
loopY = 1;
btnGenerate = Button(root, text='Сгенерировать', font='Arial 13 bold', borderwidth=4, command=call_generators)
btnGenerate.place(x=30, y=670, anchor=SW, width=300, height=50)
root.mainloop()
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import random
from tkinter import *
colors = ['#008000', '#FF0000', '#000080', '#FFFF00']
labelColors = []
def call_generators():
x = 0
# for x in range(50):
while x < 50:
color = random.choice(colors)
if x > 1:
if labelColors[x-1]['bg'] != color or labelColors[x-2]['bg'] != color:
labelColors[x]['bg'] = color
x += 1
else:
labelColors[x]['bg'] = color
x += 1
root = Tk()
root.title('Генератор')
root.geometry('{}x{}'.format(root.winfo_screenwidth(),root.winfo_screenheight()))
root.resizable(0, 0)
cordX = 60
cordY = 120
loopY = 1
for x in range(50):
labelColor = Label(root, bg='white', borderwidth=2, relief="solid")
labelColor.place(x=cordX, y=cordY, anchor=S, width=100, height=100)
labelColors.append(labelColor)
cordX = cordX + 120
loopY = loopY + 1
if loopY > 10:
cordY = cordY + 120
cordX = 60
loopY = 1;
btnGenerate = Button(root,
text='Сгенерировать',
font='Arial 13 bold',
borderwidth=4,
command=call_generators
)
btnGenerate.place(x=30, y=670, anchor=SW, width=300, height=50)
root.mainloop()
