在我的阶乘计算程序中,我从用户那里得到一个数字
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数,因为我决定输入一个浮点数,但看起来它还没有被转换或是什么......
该程序仍适用于第一个版本,但问题是什么?这些转换之间有什么区别?
答案 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
希望这会有所帮助:)