2010-04-09 3 views
1

Что он делает (вроде) ... или предназначен, сценарий читает из файла csv, который содержит информацию о звуковых файлах и точно создает список воспроизведения 60 минут.Python-скрипт работает хорошо, но не отлично, отладочная справка

Пример CSV, содержит:

their title, duration (in seconds), minium total time to be played (in minutes) 

Примером может служить:

Soundfoo,120,10 
Soundbar,30,6 
Sounddev,60,20 
Soundrandom,15,8 

Скрипт работает минимальные экземпляры пьес, взять 'Soundfoo', например, длина каждого образца составляет 120 секунд, а минимальное время для воспроизведения - 10 минут, поэтому базовая математика 10 * 60/120 дает количество эпизодов, в которые будет воспроизводиться песня, в этом случае 5.

Он предназначен для принятия минимальное количество экземпляров и равномерно распределенных друг от друга; поэтому никогда не будет периода, когда, например, Soundbar воспроизводится дважды подряд.

Затем, если использовались мини-экземпляры каждой песни, и в течение 60 минут все еще есть время, как можно сказать ему вернуться и заполнить время, выбрав каждый звук и включив его до тех пор, пока 60 минут заполняется, оставаясь малонаселенным.

Это вопрос (ы)!

Сценарий не может рассчитать фактическое время требуется, чтобы играть все звуки в файл и общее время воспроизведения, вещи Тха он не получает это неправильно все время, может быть, 3/5 раз, даже если я запустил его в том же файле csv, он даст мне разные ответы.

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

Sound1,60,10 
Sound2,60,10 
Sound3,60,10 
Sound4,60,10 
Sound5,60,10 
Sound6,60,10 

Я сделаю это в три раза и опубликовать результаты:

необходимые воспр в минутах: 60 Фактическое время в минутах, чтобы играть все необходимые объявления: 62 Всего PlayTime в минутах: 62,0

Обязательный воспр в минутах: 60 Фактическое время в минутах, чтобы играть все необходимые объявления: 71 Всего PlayTime в минутах: 71,0

Обязательный воспр в минутах: 60 Фактическое время в минутах, чтобы играть все необходимые объявления: 60 Всего воспр в минутах: 60,0

Соответствующий код:

pastebin.com/demkBXk6

И, наконец ... в контексте:

http://pastebin.com/demkBXk6

Если вы сделали это вниз здесь, спасибо за пребывание и чтение, престижность.

ответ

1

Я запустил ваш код несколько раз, и у меня всегда был тот же результат, указанный ниже. Я не могу воспроизвести вашу проблему.

Редактировать: извините, да, теперь я вижу проблему.

Проблема в первом цикле Я бы забрал все в этом цикле. Код слишком запутан и, таким образом, вызывает ошибку. Это можно сделать проще и понятнее:

Если то, что вы хотите, чтобы случайно перетасовать список required_playlist вам нужно только сделать

random.shuffle(required_playlist) 

это перетасовать список на месте. Для заполнения словаря actual_plays, то вы можете использовать defaultdict

from collections import defaultdict 
actual_plays = defaultdict(int) 
for song in required_playlist: actual_plays[song] += 1 

Это, очевидно, может быть сделано до или после перетасовки. На этом шаге вы не можете получить различное количество повторений, чем минимум, который вы определяете.

ура joaquin

0

Я предполагаю, что это имеет какое-то отношение к использованию библиотеки random по всему сценарию. Попытайтесь разбить свою программу на функции, которые содержат дискретные биты логики и названы так, чтобы отражать то, что они делают.

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