三三三3 发表于 2020-7-25 21:49:05

关于闰年的判断

这样写为什么不能判断出闰年啊tempt = input("please input:")
if tempt.isdigit() == 0:
    print("wrong type")
else:
    year = int(tempt)
    a = year/4
    b = year/100
    c = year/400
    if isinstance(c,int):
      print("闰年")
    else:
      if isinstance(a,int) and isinstance(b,float):
            print("闰年")
      else:
            print("不是闰年")      


Twilight6 发表于 2020-7-25 21:51:37

本帖最后由 Twilight6 于 2020-7-25 21:54 编辑



因为 Python 中除法返回的都是 浮点型,导致你的 isinstance 判断是否为 int 整型时永远返回的都是 False

改成这样,用 int 后的值和原来除数的值进行比较,就能知道是否被整除因为 1.0 是等于 1 的

tempt = input("please input:")
if tempt.isdigit() == 0:
    print("wrong type")
else:
    year = int(tempt)
    a = year/4
    b = year/100
    c = year/400
    if c == int(c):
      print("闰年")
    else:
      if a == int(a) and b != int(b):
            print("闰年")
      else:
            print("不是闰年")      

或者用求余运算符,来判断是否被整除:

tempt = input("please input:")
if tempt.isdigit() == 0:
    print("wrong type")
else:
    year = int(tempt)
    a = year%4
    b = year%100
    c = year%400
    if not c:
      print("闰年")
    else:
      if not a and b:
            print("闰年")
      else:
            print("不是闰年")      

三三三3 发表于 2020-7-25 21:54:36

Twilight6 发表于 2020-7-25 21:51
因为 Python 中除法返回的都是 浮点型,导致你的 isinstance(c,int) 永远返回的都是 False

改成这样 ...

谢谢!明白了!
页: [1]
查看完整版本: 关于闰年的判断