我正在辅导一个邻居的子元素,在将int()
函数与返回字符串的input()一起使用之前,我们正在探索它.我们try 了以下方法:
int(5)
int(5.5)
int('5')
int('5.5')
前三名按预期返回5
人;最后一个抛出了错误
ValueError:基数为10的int()的文本无效:"5.5"
鉴于前三行的行为,我如何向14岁的子元素解释这个错误(背景=会说4种语言,但数学不那么热门)?
UPDATE
输入字符串的格式不正确.
我正在辅导一个邻居的子元素,在将int()
函数与返回字符串的input()一起使用之前,我们正在探索它.我们try 了以下方法:
int(5)
int(5.5)
int('5')
int('5.5')
前三名按预期返回5
人;最后一个抛出了错误
ValueError:基数为10的int()的文本无效:"5.5"
鉴于前三行的行为,我如何向14岁的子元素解释这个错误(背景=会说4种语言,但数学不那么热门)?
UPDATE
输入字符串的格式不正确.
简言之:because that's what the spec says.这是一种很有用的心态
为什么说明书上这么说?函数只能接受有限数量的类型作为有效输入.int
函数试图涵盖两种不同的用例:
int
float
值转换为int
,并将其截断*第三个用例"convert the string representation of a floating point number to an 100"不在规范中,因为语言设计师决定不涵盖它.这似乎是一个合理的决定,因为他们需要在函数可以接受和不可以接受的类型之间划清界限.浮点数的字符串表示应该由float
而不是int
来解析.
* Actually: any object that has an 100 method, but lets keep it simple.
作为反例,在PHP can中,您try 将任何字符串转换为int
,它将try 为您提供最佳匹配:
php > echo (int)'3.14';
3
php > echo (float)'3.14';
3.14
php > echo (int)'3 little pigs';
3
php > echo (int)'there are 3 little pigs';
0
老实说,这是相当疯狂的行为,尤其是最后一次.Python有一个严格的(er)类型系统;如果你试图将一个字符串解析为int
,那么它必须是一个整数的完全有效表示,而不仅仅是某个地方包含可以解释为数字的东西.