Проблема здесь в том, что вы генерируете не список, а строку.
В data_2_days
вы возвращаете список, который содержит 2 кортежа из 3 элементов.В figure_probs
, когда вы выполняете итерацию по этому списку, на каждой итерации вы получаете кортеж, который можно разбить на 3 элемента.
В data_start_and_end
вы генерируете строку, представляющую список кортежей из 3 элементов.,Затем в figure_probs
, когда вы перебираете эту строку, вы получаете 1 символ на каждой итерации, и интерпретатор python возвращает ValueError
, потому что вы пытаетесь разделить этот единственный символ на 3. Измените свою функцию data_start_and_end
, чтобы сгенерироватьсписок кортежей, и он должен работать нормально.
def data_start_and_end(start_date,end_date):
start_date = DateTime.strptime(start_date, '%Y-%m-%d')
end_date = DateTime.strptime(end_date, '%Y-%m-%d')
no_days = (end_date-start_date).days
list_dates = []
x = 0
current_date = start_date
while x <= no_days:
if date.month < 10:
month_str = "0"+str(current_date.month)
else:
month_str = str(current_date.month)
if date.day < 10:
day_str = "0"+str(current_date.day)
else:
day_str = str(current_date.day)
list_dates.append((str(current_date.year), month_str, day_str))
current_date = current_date + TimeDelta(days=1)
x = x + 1
return list_dates
В дополнение к этому, return
является оператором в python и не нуждается в скобках.Я думаю, что вы также можете прочитать переменную x
и просто выполнить итерацию, пока date <= end_date
.