为什么在python中,下面的计算结果是ValueError?

为什么在python中,下面的计算结果是ValueError?,python,integer,valueerror,Python,Integer,Valueerror,我们不久前正在编写代码,遇到了一个小问题。我们想把浮点数转换成整数 代码如下: x = int(input(()) print x 我们试了一下代码,把它改成了5.5。它的计算结果为ValueError。从逻辑上讲,这是合理的逻辑。但如果我们尝试以下代码: x=int(float(输入(())或x=int(5.5),其计算值为5 为什么会发生这种情况?这是因为输入()将值作为字符串数据类型。当您使用“5”时,转换为int()有效,但将字符串输入“5.5”转换为int()将给出错误,因为pyth

我们不久前正在编写代码,遇到了一个小问题。我们想把浮点数转换成整数

代码如下:

x = int(input(())
print x
我们试了一下代码,把它改成了5.5。它的计算结果为
ValueError
。从逻辑上讲,这是合理的逻辑。但如果我们尝试以下代码:

x=int(float(输入(())
x=int(5.5)
,其计算值为5


为什么会发生这种情况?

这是因为输入()将值作为字符串数据类型。当您使用“5”时,转换为int()有效,但将字符串输入“5.5”转换为int()将给出错误,因为python不支持此操作。在这种情况下,您必须首先将其转换为浮点(),然后将其转换为int(),以获得整数值。

Its因为输入()将值作为字符串数据类型。当您使用“5”时,然后转换为int()工作正常,但将字符串输入“5.5”转换为int()将产生错误,因为python不支持此操作。在这种情况下,您必须首先将其转换为浮点(),然后将其转换为int(),以获得整数值。

在第一种情况下,您调用int(“5.5”),因为input()返回字符串。这是一个ValueError,因为5.5不是int,python的设计者决定不进行任何隐式转换

在第二种情况下,您需要调用float(“5.5”),它是5.5,因为“5.5”可以按照您的要求转换为float,然后是int(5.5),这是将float转换为int的结果(python对此使用截断;如果不需要,您可以调用round())


第三种情况与第二种情况的第二步相同。

在第一种情况下,调用int(“5.5”),因为input()返回一个字符串。这是一个ValueError,因为5.5不是int,python的设计者决定不进行任何隐式转换

在第二种情况下,您需要调用float(“5.5”),它是5.5,因为“5.5”可以按照您的要求转换为float,然后是int(5.5),这是将float转换为int的结果(python对此使用截断;如果不需要,您可以调用round())

第三种情况与第二种情况的第二步相同。

我认为
x=int(5.5)
没有导致任何值错误。第一个问题是,是的,您不能直接将其与int或float进行比较。为了确保这一点,让我们做一个小实验:

>>> x = input()
>>? 20
>>> print(type(x))
>>> <class 'str'>
当您尝试“直接”将浮点转换为整数时,会出现此问题。Python无法直接将字面上的浮点转换为int。有另一个技巧可以帮助您实现这一点,将浮点指定为数字原始数据类型。这是在将浮点添加为另一个解析器时发生的,让我们看看是否将浮点添加为另一个解析器:

x = int(float(input()))
5.5
print(type(x))
<class 'int'>
希望它能帮助您。祝您好运!

我认为
x=int(5.5)
没有导致任何值错误。第一个问题是,是的,您不能直接将其与int或float进行比较。为了确保这一点,让我们做一个小实验:

>>> x = input()
>>? 20
>>> print(type(x))
>>> <class 'str'>
当您尝试“直接”将浮点转换为整数时,会出现此问题。Python无法直接将字面上的浮点转换为int。有另一个技巧可以帮助您实现这一点,将浮点指定为数字原始数据类型。这是在将浮点添加为另一个解析器时发生的,让我们看看是否将浮点添加为另一个解析器:

x = int(float(input()))
5.5
print(type(x))
<class 'int'>

希望它能对您有所帮助。祝您好运!

如果您阅读了错误消息,您将能够更容易地理解正在发生的事情。
x=int(5.5)
不是正确的比较,因为
input
给出了一个字符串。正确的比较应该是
x=int('5.5'))
导致相同的值错误如果您阅读错误消息,您将能够更容易地理解发生了什么。
x=int(5.5)
不是正确的比较,因为
input
给出了一个字符串。正确的比较应该是
x=int('5.5')
,这将导致相同的值错误