我正在编写一个脚本,需要用户提供一些非常简单的输入,在对此进行研究后,我陷入了两难境地,试图找出最安全的方法来完成它。
我只想要一个整数并偶然发现(我认为是)一段类似于(从内存中执行此操作)的好代码:
def getNumeric(prompt):
while True:
response = input(prompt)
try:
return int(response)
except ValueError:
print "please enter a number:",
这基本上是有效的,但如果用户只是按下 [enter] 然后它就会崩溃。事实证明,我使用的是 python < 3,而作者是为 3+ 编写的。所以现在我必须重写 2.7 以满足我的需要。但是我该如何编写它来满足 EITHER 平台 <3 和 3+ 的需求?
我正在写一些可以被其他人使用的东西,我想让它成为我能做到的最便携的。我应该打扰吗?
顺便说一句,我正在为 Raspberry Pi 做这件事,我应该将我的 python 升级到 3,还是让它留在原处 (2.7.3)?
最佳答案
我的建议是将 Pi 升级到 Python 3。为两个单独的版本开发 Python 代码毫无意义(除非它是一个库,你会使用比共享函数更多的预防措施)。你可以这样做:
# Python 3.x
def getNumeric(prompt):
while True:
try:
res = int(input(prompt))
break
except ValueError:
print("Numbers only please!")
return res
对于 Python 2.7.x,使用 raw_input()
而不是 input()
。 Python 2 中的 input()
不被视为保存,因为它评估给定的字符串(并且可能是恶意的)。
关于python - 在 python 中获取安全的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760877/