python - 在 python 中获取安全的用户输入

标签 python input raspberry-pi

我正在编写一个脚本,需要用户提供一些非常简单的输入,在对此进行研究后,我陷入了两难境地,试图找出最安全的方法来完成它。

我只想要一个整数并偶然发现(我认为是)一段类似于(从内存中执行此操作)的好代码:

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/

相关文章:

一定范围内整数的 Python numpy 乘积

javascript - 用户输入仅返回一个 "if"值,而不返回另一个值

html - 是否可以更改 HTML 输入标记中文本的大小?

javascript - 检测 Node 中变量值的变化

java - Raspberry Pi、java、SPI 和触摸屏

python - gspread从python填充谷歌电子表格没有属性 'update_acell'

python - 在 Python 3 中,使用 Pytest,我们如何测试退出代码 : exit(1) and exit(0) for a python program?

python - Numpy 自定义移动窗口计数范围内的单元格

javascript - 相同的名称不能在不同的输入类型中

python - sqlalchemy,说小数没有定义?