793578477 发表于 2020-7-1 21:35:56

关于type输出类型的问题

各位鱼油大哥这是我写的代码的一部分:
temp=input("请输入一个你想知道的年份:")
year=int(temp)
aaa=year/400
if type(aaa)==int:
    print(temp+"年,"+"这一年是闰年")
感觉这行代码奇奇怪怪:
if type(aaa)==int:

不知道为什么==后边的填int或者<class 'int'>都不能达到理想目的呢?

感谢各位鱼油大哥拜托了{:9_221:}

Twilight6 发表于 2020-7-1 21:37:54

本帖最后由 Twilight6 于 2020-7-1 21:40 编辑



Python 中的除法返回的都是 float 浮点型哈

所以你 type(aaa)永远为 float ,而不为 int 导致 你的条件永不成立

建议代码用 % 求余运算符,看看有没余数用来判断是否被整除:
temp=input("请输入一个你想知道的年份:")
year=int(temp)
aaa=year%400
if aaa:
    print(temp+"年,"+"这一年是闰年")

或者用 int 和 原先的除法后的 float 判断值是否相等:

temp=input("请输入一个你想知道的年份:")
year=int(temp)
aaa=year/400
if int(aaa)==aaa:
    print(temp+"年,"+"这一年是闰年")

793578477 发表于 2020-7-1 21:39:02

Twilight6 发表于 2020-7-1 21:37
Python 中的除法返回的都是 float 浮点型哈

sorry,这个知识点忘了

hrp 发表于 2020-7-1 21:40:19

除法运算最后结果都是浮点数,所以用数据类型判断是行不通的,可以用取余%,余数为0就是能整除。

793578477 发表于 2020-7-1 21:41:33

hrp 发表于 2020-7-1 21:40
除法运算最后结果都是浮点数,所以用数据类型判断是行不通的,可以用取余%,余数为0就是能整除。

谢谢鱼油大哥
页: [1]
查看完整版本: 关于type输出类型的问题