将小数输入转换为int时出错

时间:2015-11-24 21:34:04

标签: python python-3.x input numbers integer

在我的阶乘计算程序中,我从用户那里得到一个数字

n=float(input("n=")) #sign

我想更改它,以便将数字转换为整数而不是浮点数:

n=int(input("n=")) #sign

但是当我输入像" 4.5"这样的浮点数时,这不起作用。错误代码是:

Traceback (most recent call last):
  File "C:\Python33\factorial of n natural numbers.py", line 5, in <module>
    n=int(input("n="))
ValueError: invalid literal for int() with base 10: '4.5'

我已将int数转换为float数,因为我决定输入一个浮点数,但看起来它还没有被转换或是什么......

该程序仍适用于第一个版本,但问题是什么?这些转换之间有什么区别?

1 个答案:

答案 0 :(得分:2)

问题是input()函数返回一个字符串对象:

>>> n = input("n = ")
n = 4.5

>>> x
>>> '4.5'
>>> type(n)
<class 'str'>

正如documentation所述,当您未将表示所谓integer literal的字符串实例传递给Pythons int()函数时,您将获得ValueError。< / p>

>>> int(n)
Traceback (most recent call last):
ValueError: invalid literal for int() with base 10: '4.5'

要避免这种情况,您可以捕获此错误或首先将字符串转换为浮点数(使用float() - 因此数字类型并不重要 - 之后是int:< / p>

>>> int(float(n))
    4

希望这会有所帮助:)