我正在用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)
提前感谢!
答案 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
做同样的事情?