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
通常,如果您输入 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