2017-09-22 44 views
0

我试图写一个非常简单的函数。如果给定的对象是数字(0-9),它应该返回True,否则返回False。以下是输入和期望输出的示例:包含空白字符和int(str)的python-str

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 

问题是,当函数返回False时,函数返回True为n = "1\n"。所以,像“1”这样的字符串应该被转换为整数并且是一个数字,但是像“1 \ n”这样的字符串不应该,但我不知道如何解决这个问题。我怎样才能说明字符串文字?

P.S.如果我的标题是蹩脚的,那么重命名它的建议是受欢迎的。

+6

呃...你试图重塑'str.isdigit'? – deceze

+0

你在开我玩吗:( –

+0

谢谢,我现在要删除我的问题......编辑:其实,出于好奇,有没有一种方法可以*检查一个字符串是否包含空格字符? –

回答

2

您不需要为此定义自定义函数。这有一个内置功能,即isdigit()

您可以使用它:"a5".isdigit()"1/n".isdigit()。在这两种情况下,它都会返回False。

+0

''123“.isdigit()'也返回'True'。我不认为这是OP想要的行为。您必须执行'n.isdigit()和len(n)== 1'才能获得与OP代码相同的行为。 –

+0

哦!你有多聪明? –

1

首先,您必须将文字转换为字符串,然后才能应用isdigit。 您不能将isdigit直接应用于数字。它会抛出一个错误

AttributeError: 'int' object has no attribute 'isdigit'

你必须在字符串中指定你的数字。 如:

In [3]: str(0).isdigit() 
Out[3]: True 

In [1]: "0".isdigit() 
Out[1]: True