我的陈述不起作用,我不知道为什么

2024-09-22 16:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我将代码编辑到现在可以使用的程度:

def Reset():
data = []
data.append({
    'year': now.year,
    'months': []
})
for year in range(len(data)):
    for month in range(12):
        data[year]['months'].append({
            'month': (month + 1),
            'days': []
        })
        if (month+1 == 2):
            daysAmount = 28
            if (is_leap_year(now.year)):
                daysAmount = 29
        elif ((month+1) == 12):
            daysAmount = 31
        elif ((month+1)%2 == 0):
            daysAmount = 30
        else:
            daysAmount = 31
        for day in range(daysAmount):
            data[year]['months'][month]['days'].append({
                'day': (day + 1),
            })
with open('data.json', 'w') as outfile:
    json.dump(data, outfile)

重置() 这是我让它工作后的输出:

[{"year": 2021, "months": [{"month": 1, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}, {"month": 2, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}]}, {"month": 3, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}, {"month": 4, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}]}, {"month": 5, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}, {"month": 6, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}]}, {"month": 7, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}, {"month": 8, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}]}, {"month": 9, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}, {"month": 10, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}]}, {"month": 11, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}, {"month": 12, "days": [{"day": 1}, {"day": 2}, {"day": 3}, {"day": 4}, {"day": 5}, {"day": 6}, {"day": 7}, {"day": 8}, {"day": 9}, {"day": 10}, {"day": 11}, {"day": 12}, {"day": 13}, {"day": 14}, {"day": 15}, {"day": 16}, {"day": 17}, {"day": 18}, {"day": 19}, {"day": 20}, {"day": 21}, {"day": 22}, {"day": 23}, {"day": 24}, {"day": 25}, {"day": 26}, {"day": 27}, {"day": 28}, {"day": 29}, {"day": 30}, {"day": 31}]}]}]

核对过的答案解决了我的问题


Tags: injsonfordataifrangedaysyear
2条回答

你连几个月都没发现的方法是错误的。 您希望4/2的类型为int,但它不是

type((3+1)/2)
<class 'float'>

无论如何,按类型检测偶数/奇数是非常错误的

您应该改为使用模运算%

if ((month+1) == 12):
     daysAmount = 31
elif ((month+1)%2) == 0):
     daysAmount = 30
else:
     daysAmount = 31

此代码中有多个错误

  1. 闰年检查不正确。这是检查闰年的功能:
def is_leap_year(year: int) -> bool:
    """Determine whether a year is a leap year."""
    
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)

is_leap_year(2020)  # True
is_leap_year(2022)  # False
  1. 这应该是elif
if ((month+1) == 12):
  1. 奇偶校验不正确。您可以使用%(模数运算符)
if (month + 1) % 2 == 0:  # even
if (month + 1) % 2 != 0:  # odd

相关问题 更多 >