-2

コードのトラブルシューティングに非常に苦労しています。私がやろうとしているのは、ユーザーに開始年と終了年を入力させ、その間のうるう年をすべて計算できるようにすることだけです。私はまだPythonに非常に慣れていないため、whileループがやりたいことを実行しない理由を理解できません。

starting = int(raw_input('Enter starting year: '))
ending = int(raw_input('Enter ending year: '))
print 'Leap years between', starting, 'and', ending
while starting <= ending:
    if starting % 4 == 0 and starting % 100 != 0:
       print starting
    if starting % 100 == 0 and starting % 400 == 0:
       print starting
    starting = starting + 1

それが私が今持っているものです。答えを教えてもらいたくありませんが、while ループが機能しない理由について少しヒントを得ることができれば、本当に感謝しています。

これは、IDE に表示される出力です。

ideのスクリーンショット

4

3 に答える 3

2

コードは問題なく動作しています。以下のセッションでした。

Enter starting year: 2008
Enter ending year: 2032
Leap years between 2008 and 2032
2008
2012
2016
2020
2024
2028
2032

これは、彼女に与えられた情報と完全に一致しています。

コンソール セッション:

>>> from leapyear import leap
>>> leap()
Enter starting year: >? 2008
Enter ending year: >? 2032
Leap years between 2008 and 2032
2008
2012
2016
2020
2024
2028
2032

うるう年.py

def leap():
    starting = int(raw_input('Enter starting year: '))
    ending = int(raw_input('Enter ending year: '))

    print 'Leap years between', starting, 'and', ending
    while starting <= ending:
        if starting % 4 == 0 and starting % 100 != 0:
            print(starting)
        if starting % 100 == 0 and starting % 400 == 0:
            print(starting)
        starting += 1

リスト内包表記を使用してこの機能を実行することもできます。

def new_leap(start, end):
    return [x for x in xrange(start, end + 1)
            if (x % 400 == 0) or (x % 4 == 0 and not x % 100 == 0)]

コンソール セッション:

>>> from leapyear import new_leap
>>> new_leap(2008, 2032)
[2008, 2012, 2016, 2020, 2024, 2028, 2032]
于 2013-09-23T04:19:03.603 に答える
0

これにはすべてのテストケースが含まれると思います

すべての無効なケースを value=c に追加し、一致させて b から値を削除しました

def is_leap(year):
    leap = False
    leap1=True
    b=[]
    for a in range(1800,year+200,4):
        b.append(a)
    c=[1800,1900,2100,2200,2300,2500,2600,2700,2800,2900]
    for d in range(len(c)):
        e=c[d]
        if e in b:
            b.remove(e)
    if year in b:
        return leap1
    else:
        return leap
year = int(input())
print(is_leap(year))
于 2019-02-27T08:49:36.017 に答える