检查变量是否是一串数字,如" 1234"

时间:2014-11-18 01:27:35

标签: python python-3.x

我正在用python制作一个小型互动文字游戏 我需要检查来自用户的字符串是1234(字符串中的数字是否与int()一起工作)或foo(只是一个字符串,python会追溯到我在它上面叫int()

while(True):
    IN = input("[Number] >> ")
    if(isNumber(IN)):
        break
    else:
        print("Please enter a number.")
        continue
IN = int(IN) #guaranteed to work at this point
someFunction(IN)

提前感谢!

1 个答案:

答案 0 :(得分:3)

如果你想知道某些东西是"一个字符串中的数字,一个可以使用int()",你可以通过调用int来实现:

try:
    i = int(myvar)
    # It's an int, and we have the value if you want it
except ValueError:
    # It's not an int

这是EAFP原则的一般情况:请求宽恕比允许更容易。而不是试图猜测某些事情是否会失败,通常更容易尝试它并查看它是否失败。

特别是尝试猜测比看起来更复杂的情况。例如,人们总是建议在这里使用isdigit方法,但在许多情况下都失败了。例如:

  • isdigit对于否定数字为false,因为'-'字符不是数字。
  • 对于包含尾随空格的数字,
  • isdigit为false(例如,因为您不是rstrip从输入中ping新行)。
  • isdigit适用于数百个非西方数字和不能与int一起使用的特殊形式数字。
  • int在Python 2.0和3.4之间至少两次更改了规则,并且可能会再次更改。

你可能可以提出一个与&#34完全相同的复杂规则;可以使用int()"正如某些特定的Python版本所解释的那样,但为什么int明显可以保证始终与int做同样的事情?