2

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

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

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 以满足我的需要。但是我如何编写它来满足<3和3+的平台?

我正在写一些可以被其他人使用的东西,并且想让它成为我能做的最便携的东西。我应该打扰吗?

顺便说一句,我正在为 Raspberry Pi 执行此操作,我应该将我的 python 升级到 3,还是将其保留在原处(2.7.3)?

4

2 回答 2

5

我的建议是将 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(). input()在 Python 2 中不被视为保存,因为它评估给定的字符串(并且可能是恶意的)。

于 2013-07-20T10:05:23.990 回答
0

尝试:

def getNumeric(prompt):
  while True:
    response = input(prompt)
    try:
      if isinstance(response, int):
          return int(response)
      else:
          print "please enter a number:"
    except ValueError:
      print "please enter a number:"
于 2013-07-20T09:49:00.130 回答