我试图查看一个字符串(它必须是一个字符串)是否为数字。
到目前为止,我使用的是isdigit()
,但显然isdigit
没有考虑到负数。
如果我isdigit(a)
和a = -1
,我会得到错误。
如果我isdigit(a)
和a = 1
,我会成真。
到目前为止,我有,
def rotationKeyValidated(rotationKeyStr):
if rotationKeyStr.startswith('-') and rotationKeyStr[1:].isdigit():
int(rotationKeyStr)
return rotationKeyStr.isdigit()
我试图看看它是否以负号开头,剩下的就是数字了......我不知道因为我不想使用多个返回语句。
答案 0 :(得分:5)
您可以使用try/except
block并尝试将字符串转换为整数:
def rotationKeyValidated(rotationKeyStr):
try:
int(rotationKeyStr)
except ValueError:
return False
return True
这种编码风格包含Python的EAFP principle,并且是大多数Python程序员的首选。它也非常强大,处理任何可以转换为int
的字符串。
由于您的作业只需要一个return语句,因此您可以添加else:
块和一个标志:
def rotationKeyValidated(rotationKeyStr):
try:
int(rotationKeyStr)
except ValueError:
flag = False
else:
flag = True
return flag
else:
块仅在执行try:
块时执行,而不会引发错误。
好吧,既然你必须使用str.isdigit
,你总是可以这样做:
def rotationKeyValidated(rotationKeyStr):
if rotationKeyStr.startswith('-'):
rotationKeyStr = rotationKeyStr[1:]
return rotationKeyStr.isdigit()
if语句检查字符串是否以-
开头,如果是,则删除该字符。之后,我们可以安全地返回str.isdigit
。