为什么 int() 函数在 input() 函数中不将浮点数转换为整数?

Why doesn't the int() function convert a float to integer while in input() function?

为什么 int() 函数在 input() 函数中不将浮点数转换为整数?

input_1 = input(f'enter the num: ')

try: 
    a = int(input_1)
    print(f"it is an integer")
except:
    print(f"no an integer")
    

input_1 = 3.532453

try: 
    a = int(input_1)
    print(f"it is an integer")
except:
    print(f"no an integer")

结果:

enter the num: 3.532453
no an integer
it is an integer

print(int(123.456)):您可以将非整数转换为 int

print(int("123456")):可以将表示整数的字符串转换为int

print(int("123.456")):不能将表示非整数的字符串转换为 int

我的意思是,你可以,但不能直接使用 int(...) 操作。

因此您可以在 python 中将小数更改为整数。 但并非没有丢失小数点后的所有数据。 例如,如果您使用 int(float("12.3356") 将“12.3356”转换为 int,结果将是 12 .

An int value in python is one without a decimal point for eg: 3.

A float value in python is a number with a decimal point for eg: 3.141.

因此,如果您想检查用户输入的内容是否为数字并保留小数点后的所有内容,请将字符串转换为 float 而不是一个 int:

input_1 = input('enter the num: ')

try:
    a = float(input_1)
    print("it is a number")
except ValueError:
    print("not a number")

通过使用 float() 而不是 int(),您可以保留小数点后的所有数据(如果您在程序的其他部分需要它)。

但是,如果您仍想将 float 转换为 int(并丢失小数点后的所有内容),您可以这样做:

请注意,下面基本上是针对缺点的额外代码,而上面的代码通常更好(在大多数情况下),但如果这就是您想要的,那么您可以这样做:

input_1 = input('enter the num: ')

try:
    a = int(float(input_1))
    print("it is a number")
except ValueError:
    print("not a number")

请记住,当您请求输入时,input_1 值不是浮点数,而是字符串

input_1 = input(f'enter the num: ')
print(type(input_1)) # ​<class 'str'>

因此,您试图通过转换将值为 3.532453 的字符串转换为整数。

如果先将此字符串转换为浮点数,然后再将其转换为整数,它就可以工作。

input_1 = input(f'enter the num: ')
try: 
    a = int(float(input_1))
    print(f"it is an integer") 
except: 
    print(f"no an integer")

input函数returns一个字符串(在python中输入str)。 int 函数接受一个字符串,只要该字符串表示有效整数(默认情况下以 10 为底)。这意味着当您传递包含 . 的字符串时,int 将失败,因为该字符串不是有效整数。

>>> input_1 = input(f'enter the num: ')
enter the num: 3.532453
>>> print(type(input_1))
<class 'str'>
>>> int(input_1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3.532453'

另一方面,当您执行 input_1 = 3.532453 时,您正在创建类型 float 的变量 input_1int 函数接受浮点参数并通过剥离浮点部分将它们转换为整数。

>>> input_1 = 3.532453
>>> print(type(input_1))
<class 'float'>
>>> int(input_1)
3