开完邪 发表于 2020-4-8 14:43:08

将字符串变成整数后用isinstance测试得到的结果是false

o=input("输入年份:")
n = int(o)
if isinstance(n/4,int):
    print("闰年")
输入数字2000得到的结果是false.
请问这是咋回事

wp231957 发表于 2020-4-8 14:45:45

n/4永远不是整数

qiuyouzhi 发表于 2020-4-8 14:49:02

假设n为16:
16 / 4 = 4.0, 而不是4
老老实实用取余吧

上帝之手913 发表于 2020-4-8 14:57:37

o = int(input("输入年份:"))
for n in range (2,o):
    if o % n == 0:
      print("是闰年")
      break
else:
    print("不是闰年")
这样应该就可以了

txxcat 发表于 2020-4-8 15:25:17

判断能否能整除,用取余是最佳方案:
o=input("输入年份:")
n = int(o)
if n%4==0:
    print("闰年")
代码没问题了,但是闰年可不只有被4整除一项,还有不是100的倍数,但400的倍数可以,所以应该是这样判断:
o=input("输入年份:")
n = int(o)
if n%4==0 and n%100!=0 or n%400==0:
    print("闰年")
else:
    print("非闰年")

zltzlt 发表于 2020-4-8 17:11:24

Python 的除法运算返回值永远不可能为整数:

>>> 4 / 2
2.0
>>> 8 / 3
2.6666666666666665
>>> 12 / 12
1.0

建议还是用取余运算:

o = input("输入年份:")
n = int(o)
if n % 4 == 0:    # 如果除以 4 能除尽
    print("闰年")
页: [1]
查看完整版本: 将字符串变成整数后用isinstance测试得到的结果是false