Передавать даты в список - PullRequest
0 голосов
/ 17 июня 2020

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

"""Generate random dates where end date is greater than start date
   and append to list
"""
import random
from datetime import date

start = date(2019, 1, 1)
end = date(2019, 12, 31)

for i in range(27):
    random_start_date = start + (end - start) * random.random()
    random_end_date = random_start_date + (end - random_start_date) * random.random()
    #Converting to string in order to append to list
    start_dates = random_start_date.strftime('%Y-%m-%d')
    end_dates = random_end_date.strftime('%Y-%m-%d')
    print(start_dates, end_dates)


#Current output
2019-01-01 2019-02-01
2019-02-01 2019-03-01
2019-05-21 2019-05-31

#Desired output
[2019-01-01, 2019-02-01, 2019-05-21]
[2019-02-01, 2019-03-01, 2019-05-31]

1 Ответ

1 голос
/ 17 июня 2020

У вас две проблемы.

Первая - вы не добавляете в свой список, а заменяете его, вторая - вы печатаете каждый раз через l oop а не в конце.

Попробуйте следующее:

start_dates=[]
end_dates=[]
for i in range(27):
    random_start_date = start + (end - start) * random.random()
    random_end_date = random_start_date + (end - random_start_date) * random.random()
    #Converting to string in order to append to list
    start_dates.append(random_start_date.strftime('%Y-%m-%d'))
    end_dates.append(random_end_date.strftime('%Y-%m-%d'))
print(start_dates, end_dates, sep='\n')

(sep='\n' помещает каждый аргумент в print() в новую строку.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...