为何Python中用户输入浮点数字符串转整数报错,转浮点数正常?
为什么Python中int()无法转换"3.0"这样的字符串,但float()可以转换"3"?
这本质是int()和float()两个函数对字符串输入的解析规则差异:
int()的严格性:
int()要求传入的字符串必须是纯整数格式的字面量,不能包含小数点、指数符号这类非整数相关的字符。哪怕字符串代表的数值在数学上是整数(比如"3.0"),只要格式不符合纯整数要求,就会直接抛出ValueError。示例:int("3") # 正常运行,返回3 int("3.0") # 报错:ValueError: invalid literal for int() with base 10: '3.0'float()的兼容性:
float()的设计兼容更多格式的数字字符串,它可以解析整数格式、标准浮点数格式甚至科学计数法格式的字符串。因为整数在数值上属于浮点数的子集,所以像"3"这样的整数字符串,会被float()正确转换为对应的浮点数3.0。示例:float("3") # 正常运行,返回3.0 float("3.0") # 正常运行,返回3.0 float("3e2") # 正常运行,返回300.0
如果需要把"3.0"这类字符串转成整数,可以先转成浮点数再转整数:
x = int(float(input("Choose a number: ")))
内容的提问来源于stack exchange,提问作者Capocho
相关产品推荐
相关产品推荐

