栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ValueError:int()以10为底的无效文字

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ValueError:int()以10为底的无效文字

回答:

您的回溯告诉您

int()
采用整数,您试图给出一个十进制数,因此您需要使用
float()

a = float(a)

这应该按预期工作:

>>> int(input("Type a number: "))Type a number: 0.3Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: '0.3'>>> float(input("Type a number: "))Type a number: 0.30.3

计算机以各种不同的方式存储数字。Python有两个主要的。存储整数(ℤ)的整数,以及存储实数(ℝ)的浮点数。您需要根据自己的需求使用正确的选项。

(请注意,Python非常擅长将其抽象出来,例如,大多数其他语言也具有双精度浮点数,但您不必担心。从3.0开始,Python还将自动转换整数如果将它们分开就浮起来了,所以实际上很容易使用。)

追溯之前的答案猜测:

您的问题是您输入的内容无法转换为数字。这可能是由很多原因引起的,例如:

>>> int(input("Type a number: "))Type a number: -1-1>>> int(input("Type a number: "))Type a number: - 1Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: '- 1'

-
和之间添加空格
1
将导致字符串无法正确解析为数字。当然,这只是一个例子,您必须告诉我们您所提供的意见,以便我们能够确定问题所在。

有关代码样式的建议:

y = [int(a)**(-2),int(a)**(-1.75),int(a)**(-1.5),int(a)**(-1.25), int(a)**(-1),int(a)**(-0.75),int(a)**(-0.5),int(a)**(-0.25), int(a)**(0),int(a)**(0.25),int(a)**(0.5),int(a)**(0.75), int(a)**1,int(a)**(1.25),int(a)**(1.5),int(a)**(1.75), int(a)**(2)]

这是一个非常糟糕的编码习惯的例子。在您一次又一次地复制某些内容的地方,出现了错误。首先,您

int(a)
需要花费大量的时间,无论您在何处执行此操作,都应将值分配给变量,然后使用该值,避免一次又一次地键入(并迫使计算机计算)该值:

a = int(a)

在此示例中,我将值分配回

a
,用我们要使用的新值覆盖旧值。

y = [a**i for i in x]

这段代码产生的效果与上面的怪物相同,而无需大量重复编写相同的内容。这是一个简单的列表理解。这也意味着,如果您编辑

x
,则无需对进行任何操作
y
,它自然会更新以适合您。

还要注意的是PEP-8,Python的风格指南,强烈建议进行一个函数调用时,不要给自己留下一个标识符和括号之间的空格。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号