我正在尝试编写一个非常简单的函数。如果给定的对象是一个数字(0-9),它应该返回True,否则返回False。以下是输入和所需输出的示例:
is_digit("") => False
is_digit("7") => True
is_digit(" ") => False
is_digit("a") => False
is_digit("a5") => False
我的代码适用于上述示例。
def is_digit(n):
try:
return int(n) in range(0, 10)
except:
return False
麻烦的是,当n = "1\n"
返回False时,该函数返回True。因此,像“1”这样的字符串应该转换为整数并且是一个数字,但是像“1 \ n”这样的字符串不应该,但我不知道如何解决这个问题。如何计算字符串文字?
P.S。如果我的头衔很蹩脚,欢迎重新命名。
答案 0 :(得分:2)
您不需要为此定义自定义功能。有一个内置函数,即isdigit()
。
您可以将其用作:"a5".isdigit()
或"1/n".isdigit()
。在这两种情况下,它都会返回False。
答案 1 :(得分:1)
首先,您必须将文字转换为字符串,然后才能应用isdigit。 您不能直接将isdigit应用于数字。它会抛出错误
AttributeError:'int'对象没有属性'isdigit'
您必须在字符串中对数字进行类型转换。 例如:
In [3]: str(0).isdigit()
Out[3]: True
或
In [1]: "0".isdigit()
Out[1]: True