将日期传递到列表

时间:2020-06-17 03:54:56

标签: python list

我试图生成结束日期大于开始日期的随机开始日期和结束日期,并将结果传递给列表。我已经尝试过for循环,但是它没有按预期工作。以下是我正在使用的代码以及所需的输出。

"""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 个答案:

答案 0 :(得分:1)

您在那里遇到了两个问题。

第一个是您没有追加到列表中,而是要替换它,第二个是您每次通过循环而不是最后一次打印。

尝试一下:

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()的新行上。)

相关问题