2013-04-13 3 views
1

Так что, если у меня был список цветов:Подсчет красных линий от линий случайных цветов

colors = ['red', 'blue', 'green']

И я использовал их, чтобы случайно цветные линии. Можно ли подсчитать, сколько красных линий есть вообще? Я знаю, что было бы легче подсчитать, есть ли у каждой линии фиксированный цвет, но как бы я рассчитывал, если они этого не сделают?

colors = ['red', 'blue', 'green'] 
def lines(xcoord, ycoord): 
    import random 
    global colors 
    penup() 
    goto(xcoord, ycoord) 
    pensize(3) 
    pendown() 
    color(random.choice(colors)) 
    forward(100) 
    right(randint(0,360)) 
    penup() 
for _ in range(3): 
    lines(randint(min_xcoord, max_xcoord), \ 
     randint(min_ycoord, max_ycoord)) 

Так что я хочу найти, сколько красных линий есть после того, как оно закончит рисование, скажем 3 линии.

+0

Можете ли вы показать код для рисования кругов ? –

+0

Я изменил свой код, чтобы рисовать линии вместо кругов, потому что это было проще. – user2270501

ответ

1

Предполагая, что вы используете код, подобный этому:

from turtle import * 
from random import choice 
accuracy=64 
colors = ['red', 'blue', 'green'] 
dist=400/accuracy 
turn=360/accuracy 
color_times = dict(zip(colors, [0, 0, 0])) # {'red':0, 'blue':0', 'green':0} 
for j in range(5): 
    my_color = choice(colors) 
    color(my_color) 
    color_times[my_color] += 1 
    down() 
    for i in range(0,360,turn): 
     fd(dist) 
     left(turn) 
    up() 
    fd(25) 
mainloop() 
print '{}:{}\n {}:{}\n {}:{}'.format('red', color_times['red'], 'blue', color_times['blue', 'green', color_times['green']) 

на основе кода строки:

Изменение color(random.choice(colors)) на:

my_color = random.choice(colors) 
color(my_color) 
color_times[my_color] += 1 # you have to initialize color_times before the loop 
+1

Правильная идея, но также рассмотреть возможность использования 'collections.Counter'. –

+0

Я добавил бит кода в мой, но потом понял, что не могу поместить его в свою функцию, потому что каждый раз, когда он рисует строку, он будет подсчитываться, а затем перезагружается, когда он рисует следующую строку. Значит ли это, что я должен использовать счетчик где-то в другом месте или могу использовать счетчик в своей функции? Извините, я все еще новичок в python. – user2270501

+0

@ user2270501 О да, извините; 'left (turn)' должен быть отступом в цикле 'for' (я изменил код выше). –

-1

первый способ: вы можете создать список массива и вставить & удалить цвет в ней, где назначены и тогда, когда вы хотите, чтобы рассчитывать только подсчитывать красные поля массива,

второй путь: создать список массивов (ключ, значение) с и вставки цвета, которые вы используете в ключах массива и поставить счетчик каждого цвета в значении

colors[ 
     red=>0, 
     blue=>0, 
     green=>0 
     ] 

я надеюсь, что полезно.

Смежные вопросы