Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
作为浮点数的字符串的Python int()_Python - Fatal编程技术网

作为浮点数的字符串的Python int()

作为浮点数的字符串的Python int(),python,Python,很可能这是一个愚蠢的问题,但我想知道为什么python不能从实际上是浮点数的字符串中生成整数 >>> int(1.0) 1 >>> int(float('1.0')) 1 但是 >>int('1.0') 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 整数('1.0') ValueError:基数为10的int()的文本无效:“1.0” 有人能澄清为什么不能一步到位吗 有人能澄清为什么不能一步到位吗 引用Python的禅宗: 我想知道为什么pytho

很可能这是一个愚蠢的问题,但我想知道为什么python不能从实际上是浮点数的字符串中生成整数

>>> int(1.0)
1
>>> int(float('1.0'))
1
但是

>>int('1.0')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
整数('1.0')
ValueError:基数为10的int()的文本无效:“1.0”
有人能澄清为什么不能一步到位吗

有人能澄清为什么不能一步到位吗

引用Python的禅宗:

我想知道为什么python不能从实际上是浮点数的字符串中生成整数

>>> int(1.0)
1
>>> int(float('1.0'))
1

根据Python的原理,如果字符串包含一个浮点数,然后您希望将其转换为int,那么您有责任将其解释清楚。这种语言不会试图猜测你的意图。

直接从关于
int
的文档中:

如果x不是一个数字或者如果给定了base,那么x必须是一个字符串或Unicode对象,表示基数中的整数文本

下面是如何定义基数中的整数文字:

longinteger    ::=  integer ("l" | "L")
integer        ::=  decimalinteger | octinteger | hexinteger | bininteger
decimalinteger ::=  nonzerodigit digit* | "0"
octinteger     ::=  "0" ("o" | "O") octdigit+ | "0" octdigit+
hexinteger     ::=  "0" ("x" | "X") hexdigit+
bininteger     ::=  "0" ("b" | "B") bindigit+
nonzerodigit   ::=  "1"..."9"
octdigit       ::=  "0"..."7"
bindigit       ::=  "0" | "1"
hexdigit       ::=  digit | "a"..."f" | "A"..."F"
如您所见,
不存在于词汇定义中

更多关于和


同样值得一提的是,您的愿望在的语言中自然是可以实现的,而Python采用的是

我的意思是关于它如何存储在内存/硬件中:)@TapajitDey:问题与事物如何存储在内存/硬件中无关。选择不允许这种隐式转换是Python设计者深思熟虑的决定。@TapajitDey Python是一种高级解释语言,它如何在内部表示数据是一个实现细节。你为什么要依赖它?我想这是真的,但只是感觉有点局限你确定这是相关的吗?您引用的是Python语法规则,它与
int
函数接受的参数不完全对应。@Kos我引用的是整型文字
int
接受数字或表示整数的字符串/unicode对象作为旁注,对于对lexer感兴趣的人来说,是一个有趣的读物