为啥我要在 Python 中使用 int( input().strip() ) 而不是 int( input() )?
Posted
技术标签:
【中文标题】为啥我要在 Python 中使用 int( input().strip() ) 而不是 int( input() )?【英文标题】:Why would I use int( input().strip() ) instead of just int( input() ) in Python?为什么我要在 Python 中使用 int( input().strip() ) 而不是 int( input() )? 【发布时间】:2018-06-22 21:33:13 【问题描述】:如果我想输入一个数字,我还需要.strip()
方法吗?像这样:
n = int(input().strip())
不仅仅是编码:
n = int(input())
我知道.strip()
返回字符串的副本,其中所有字符都已从字符串的开头和结尾剥离。但我想知道为什么/如果有必要。
【问题讨论】:
你说得对,没必要。那些总是有相同的结果。 来自docs:“可选地,文字可以在前面加上 + 或 -(中间没有空格)并被空格包围。” (强调我的)因此,正如@Ryan 所说,没有必要去除空格。 【参考方案1】:使用int
将其转换为整数时没有必要,因为int
已经处理(忽略)前导和尾随空格*:
>>> int('1 ')
1
>>> int(' 1')
1
>>> int(' 1\n\t') # also handles other spaces like newlines or tabs
1
如果您使用 sys.stdin.readline
(包含尾随换行符)并且您不知道使用该值的函数是否可以处理额外的空格,则去除空格是最重要的。
* 仅供参考:float
、complex
、fractions.Fraction
和 decimal.Decimal
类型也忽略前导和尾随空格,因此如果您使用其中任何一个,则不需要 strip
字符串。
【讨论】:
int
也可以解析 00001
之类的东西,其中 a = 0001
失败
是的,它甚至可以解析千位分隔符,当int('100_000')
工作时我真的很惊讶(Python 3.6)。
这对于较大的十六进制数(使用基数 16)特别有用。【参考方案2】:
现在您可以使用名为 ninput 的新库并使用名为 int_input() 的函数 例如
import ninput
n = ninput.int_input()
https://pypi.org/project/ninput/0.1.2/ 有库文档和文件
【讨论】:
如果你想推广你今天创建的库,你应该添加一个注释,让其他人清楚这是需要测试的代码以上是关于为啥我要在 Python 中使用 int( input().strip() ) 而不是 int( input() )?的主要内容,如果未能解决你的问题,请参考以下文章