汇总整数列表中的一些项目

问题描述

因此,我进行了很多搜索,但没有发现与我的问题完全相似的内容。我的问题是:我有几个月的天数清单。看起来像这样:

daysInMonth = [31,28,31,30,31]

现在,我已经有了一个year年公式,可以将{daysInMonth[1]更改为29

我需要根据用户输入的月份来汇总列表中选定数量的值。这样做的原因是,儒略日是一年中到输入日期为止的天数。因此用户输入一个日期,例如1 31 2020,则儒略日将是:31,所以2 2 2020将是:33,而12 31 2020将是:366,因为今年是a年。希望这是有道理的。

我在高中时就使用C ++进行了这个项目,我正在尝试将其转换为Python。我正在尝试执行的C ++版本如下所示:

int findingTheMonth(int daysInMonth[],int julianDay,int day,int month)
{
    for (int i = 0; i < (month-1); i++)
    {
        julianDay = julianDay + daysInMonth[i];
    }
    julianDay = julianDay + day;

    return julianDay;
}

我在Python中的版本是这样:

def findTheJulian(day,month,daysInMonth):
    # sum together the months up until the users entered month
    # then add the amount of days of the users entered month
    julianDay = sum(daysInMonth[month-1]) + day

    return julianDay

失败的原因是因为它说int对象不是可迭代的,但是我不明白为什么它给了我这个。我不是在尝试更改整数或在整数上写...我正在尝试通过汇总列表中的一些元素并将新的值存储到julianDay中,然后用户输入day。我该怎么办?另外,我是Python的新手。我可能还不太了解很多事情,但是我有编码背景,应该能够弄清楚。

解决方法

问题是您要从daysInMonth中获取一个元素。例如,如果您通过daysInMonth == [31,28,31,30,31]month == 3,则会得到31。并且sum(31)会引发错误,因为您无法获得数字的总和。

您要达到的目标是分割列表的一部分(month之前的所有元素)。切片语法为list[start:end]。您可以忽略start并仅设置end,那么start将为0。

您的情况:julianDay = sum(daysInMonth[:month-1]) + day

,

daysInMonth[month-1]从daysInMonth获取特定的值。您想要做的是daysInMonth[:month-1](注意冒号)。这样可以使您获得daysInMonth的一部分,然后sum()就可以对其进行迭代。