lzb1001 发表于 2023-3-22 21:29:18

关于闰年

闰年不是这样定义的吗?即能被4整除但不能被100整除,或者能被400整除都是闰年。

输出打印2000-3000年之间的闰年:

for i in range(2000, 3000):
        if i % 400 == 0:
                print(i)

               
2000
2400
2800


只有三个闰年?好像不对吧

isdkz 发表于 2023-3-22 21:36:39

你给出的代码只考虑了能被400整除的情况,而忽略了能被4整除但不能被100整除的情况。根据闰年的定义,我们应该同时考虑这两种情况。请参阅下面的修正后的代码:

for i in range(2000, 3001):
    if (i % 4 == 0 and i % 100 != 0) or i % 400 == 0:
      print(i)

这段代码将打印出2000-3000年之间的所有闰年。

一点沙 发表于 2023-3-22 21:36:49

这个问题是因为你这里的if语句表达的意思是:如果年份能被四百整除则执行下列代码。
如果要达到您的要求,就需要这样写:for i in range(2000, 3000):
      if (i % 4 == 0 and i % 100 % != 0) or (i % 400 == 0):
                print(i)

如果您对这个答案满意的话,请设置最佳答案!{:5_102:}

一点沙 发表于 2023-3-22 21:37:09

isdkz 发表于 2023-3-22 21:36
你给出的代码只考虑了能被400整除的情况,而忽略了能被4整除但不能被100整除的情况。根据闰年的定义,我们 ...

就晚了十秒呀{:10_266:}

未泯 发表于 2023-3-22 21:38:51

兄弟你自己都说了能被4整除但不能被100整除,或者能被400整除。怎么就判断了一个能被400整除
for i in range(2000, 3000):
      if i % 400 == 0 or (i%4==0 and i%100!=0):
                print(i)

sfqxx 发表于 2023-3-22 21:41:41

注意审题
for i in range(2000, 3001):
    if (i % 4 == 0 and i % 100 != 0) or i % 400 == 0:
      print(i)

lzb1001 发表于 2023-3-22 21:45:10

未泯 发表于 2023-3-22 21:38
兄弟你自己都说了能被4整除但不能被100整除,或者能被400整除。怎么就判断了一个能被400整除

哦哦哦,我明白了,

或者……,或者……,所以我以为只要后半句,现在明白了要用or

lzb1001 发表于 2023-3-22 21:48:51

感谢上面三位大神的指点,我给第一回答的大神吧,另外两位大神莫怪,可惜最佳答案只有一个

lzb1001 发表于 2023-3-22 21:50:05

sfqxx 发表于 2023-3-22 21:41
注意审题

谢谢第四位大神

match123_xbd 发表于 2023-4-7 15:04:50

{:5_109:}
页: [1]
查看完整版本: 关于闰年