在我的阶乘计算程序中,我从用户那里得到一个数字
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数转换为浮点数,但是它似乎尚未转换,或者是什么……
该程序仍可与第一个版本一起使用,但是那里出了什么问题?这些转换之间有什么区别?
问题在于该input()
函数返回一个字符串对象:
>>> n = input("n = ")
n = 4.5
>>> x
>>> '4.5'
>>> type(n)
<class 'str'>
如文档所述,当您不将表示所谓整数文字的字符串实例传递给Pythonsint()
函数时,您将获得ValueError
。
>>> int(n)
Traceback (most recent call last):
ValueError: invalid literal for int() with base 10: '4.5'
为避免这种情况,您可以捕获此错误或将字符串首先转换为浮点数(使用float()
-因此数字类型并不重要-然后转换为int
:
>>> int(float(n))
4
希望这可以帮助 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句