Python 如何用==int判断是否是闰年

Python how to check if it is a leap year with ==int

 def leapyear(year):
if year/400 == int :
    return False
if year/100 == int :
    return False
if year/4 == int :
    return True

你好我想知道为什么我的代码不能使用它 == to int 因为本质上它与使用模和 == to 0 是一样的这只是我遇到的一个问题。

def check(n): if n > 200: return "large" 
x = n/2 if x !=int: return "odd" 
elif x==0 and n< 100: return "small" 
elif x==0 and n>100: return "medium"

另外这里的 int 是怎么工作的

您检查的是直接号码,而不是它的类型。你应该使用....

if type(year/400) == int :
       Then here is the conditional block.
elif type(year/100) == int:
       Another Conditional check
elif type(year/4) == int:
       Another conditional block.

你也有一个逻辑错误请看下面给出的完整代码。 所以你的函数可以用正确的逻辑重写为...

def leap_year(year):
    if type(year/400) == int :
       return False
    elif type(year/100) == int:
       return False
    elif type(year/4) == int:
        return False
    else:
        return True

这是完整代码。

在Python中int被认为是Class。您可以在变量上使用 type() 函数来获取它在 Python 中的数据类型。因此,要使用您的逻辑,您必须按如下方式重写代码:

def leapyear(year):
    if type(year/400) == int :
        return False
    if type(year/100) == int :
        return False
    if type(year/4) == int :
        return True

注意:我刚刚通过在必要时添加 type() 函数来复制您的代码,但建议使用 ifelifelse 而不是 if,因为它会优化您的代码。

您的问题是 inttype。如果你试图将一个数字与一种类型的对象进行比较,这就是你在写 if year/400 == int : 时所做的,它总是 return False,因为它们永远不会相同。

检查 year/400 是否为整数的更好方法是:

if year%400 == 0:
    return False

这是说: 如果year/400的余数等于0,returnFalse,这就是你想要的。

其他一些是:

在大多数情况下,您应该使用 elif 而不是 if。在这一个中,这无关紧要,因为 return 语句提前终止了函数的执行,但无论如何您仍然应该使用它。否则,即使您获得了最终结果,它也会通过 if 语句的其余部分。

另一件事与您的代码无关,但您的闰年标准不正确。如果年份可以被 4 整除,则为闰年。 除非年份可以被 100 整除,否则不能。 除非能被400整除,否则就是。

改进代码:

def leapyear(year):
    if year%400 == 0:
        return True
    elif year%100 == 0:
        return False
    elif year%4 == 0:
        return True
    return False

你应该知道如果使用 '/' 输出是 FLOAT。

例如

2020/400 -> 5.05 
2020/100 -> 20.2
2020/4   -> 505

您必须像使用 int() 一样更改类型 例如

2020/400 -> 5.05  int(2020/400) -> 5
2020/100 -> 20.2  int(2020/100) -> 20
2020/4   -> 505   int(2020/4)   -> 505

from __future__ import division
import sys
time_year = int(sys.argv[1])

def leapyear(year):
    if (year/400) == int(year/400) :
        result = False
    elif (year/100) == int(year/100) :
        result = False
    elif (year/4) == int(year/4) :
        result = True
    else :
        result = 'something worg'
    return result
a=leapyear(time_year)
print a

希望能帮到你:)

year = int(input("Enter a year: "))

    if (year % 4) == 0:
       if (year % 100) == 0:
           if (year % 400) == 0:
               print("{0} is a leap year".format(year))
           else:
               print("{0} is not a leap year".format(year))
       else:
           print("{0} is a leap year".format(year))
    else:
       print("{0} is not a leap year".format(year))

您可以通过返回 TrueFalse 来检查年份是否为闰年 不使用任何库。

(lambda year : (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0))(2020)