我试图生成结束日期大于开始日期的随机开始日期和结束日期,并将结果传递给列表。我已经尝试过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]
答案 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()
的新行上。)