Python 中的 int() 如何知道一个数字是否为浮点数?

How does int() in Python know if a number is a float?

通常,如果您输入 int(a) 或 int(b),它会将“a”和“b”转换为整数

如果我尝试 print(int(4.5)) 它将打印 4

但是如果我在 try 语句中尝试它:

def zero_dev(num1, num2):
    try:
        a = int(num1)/int(num2)
        return int(a)
    except ZeroDivisionError:
        return 'Zero Division Exception: integer division or modulo by zero'
    except ValueError:
        try:
            val = int(num1)
            pass
        except ValueError:
            return f"Input Exception: invalid literal for int() with base 10: '{num1}'"
        try:
            val1 = int(num2)
        except ValueError:
            return f"Input Exception: invalid literal for int() with base 10: '{num2}'"
    
    
num_a = input()
num_b = input()
print(zero_dev(num_a, num_b))

编辑: 如果 num1 = 4 和 num2 = 4.5

为什么 Python 没有将 num2 转换为整数?

以前 int() 会将浮点数转换为整数。

但是这里没有转换,它告诉我“num2”的底数是10,它不是整数。

input() 总是 returns 一个字符串 。所以 num_a = input(...) 使 num_a 成为一个字符串。

int() 不会将 floats-as-strings 转换为整数:

>>> int(3.4)  # ok
3
>>> int("3")  # ok
3
>>> int("3.4")  # not ok
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3.4'

但是float()对浮点数或整数的字符串输入没有问题:

>>> float("3.4")
3.4
>>> float("3")
3.0

因此将其结合起来以获得您想要的行为 - 首先将输入(字符串)转换为 float,然后再转换为 int:

>>> int(float("3.4"))
3