python - 包含空格字符和int(str)的str

时间:2017-09-22 12:09:02

标签: python string-literals

我正在尝试编写一个非常简单的函数。如果给定的对象是一个数字(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。如果我的头衔很蹩脚,欢迎重新命名。

2 个答案:

答案 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