0

したがって、年のリストの中で最も近いうるう年のリストを返すと思われるこのコードです。

例: を使用して関数を呼び出すと、[1995 1750 2018]返される必要があります。

1996 1748 2016

その数字のセットに対して何をしますか。

私が抱えている問題は、たとえば入力にうるう年がある場合、2008に最も近いうるう年が返されないことです2008。戻り2008ます。

コードを変更して機能させる方法について何か提案はありますか?

コード

def is_leap(year):
    leap = False


    if year % 4 == 0:
        if year % 100 != 0 or year % 400 == 0:
            leap = True

    return leap


major_b = []
major_f = []
newLst = []


def year_forward(yearBounds):

    for item in yearBounds:
        counter = 0

        while not is_leap(item):
            item = item + 1
            counter += 1


         major_f.append([item, counter])
    return major_f


def year_backward(yearBounds):

    for item in yearBounds:
        counter = 0
        while not is_leap(item):
            item = item - 1
            counter -= 1


        major_b.append([item,counter])

    return major_b






def findLastLeapYears(yearBounds):

    forward =  year_forward(yearBounds)
    backward = year_backward(yearBounds)



    counter = 0
    for item in forward:
        if abs(item[1]) < abs(backward[counter][1]):
            newLst.append (str(item[0]))
            counter+=1
        elif abs(item[1]) == abs(backward[counter][1]):
            if item[0] < backward[counter][0]:
                newLst.append (str(item[0]))
                counter += 1
            else:
                newLst.append (str(backward[counter][0]))
                counter += 1

        else:
            newLst.append (str(backward[counter][0]))
            counter+=1

    return newLst
4

1 に答える 1

4

独自のうるう年検出コードをロールしようとするのは避けたいと思います。calendar.isleap年がうるう年かどうかを判断するために使用します。

次に、次のようにループします。

    import calendar    
    def find_nearest_leap(year):
        offset = 1
        while True:
           if calendar.isleap(year - offset):
               return year - offset
           if calendar.isleap(year + offset):
               return year + offset
           offset += 1

値のリストから最も近いうるう年のリストを見つけるには、次の操作を行います。

nearest_leap_years = [find_nearest_leap(year) for year in years]

years興味のある年のリストはどこにありますか。

また、最も近いうるう年は年自体ではないと仮定しています。これは問題の制約のようです...

于 2018-10-26T22:00:04.797 に答える