在python中创建类似isdigit()的函数

在python中创建类似isdigit()的函数,python,Python,请不要给我答案,给我指出正确的方向,谢谢。此外,我需要在不使用isdigit()的情况下执行此操作 我正在尝试创建一个程序来检查字符串的所有字符,如果其中任何字符不是自然数,则程序将返回False,否则将返回True 这就是我到目前为止所做的: numbers = ["0123456789"] if len(str) > 0: for i in str: if i not in numbers: return False e

请不要给我答案,给我指出正确的方向,谢谢。此外,我需要在不使用
isdigit()的情况下执行此操作

我正在尝试创建一个程序来检查字符串的所有字符,如果其中任何字符不是自然数,则程序将返回
False
,否则将返回
True

这就是我到目前为止所做的:

numbers = ["0123456789"]

if len(str) > 0:
    for i in str:
        if i not in numbers:
            return False
        else:
            return True

我有一些测试用例,我遇到的问题是,当我返回时,整个程序就结束了。我需要找到一种方法来包含
否则:返回True

当您一次将每个字符与所有数字进行比较时,您需要从列表中删除数字,即
“1”==“0123456789”
,您还需要在返回True之前检查每个字符:

def is_dig(s):
    numbers = "0123456789"  # single iterable of the numbers
    for i in s:
        if i not in numbers:
            return False
    return bool(s) # return outside the loop also catching empty string
更有效的方法是使用ord和
all

def is_dig(s):
    return len(s) > 0 and all(48 <= ord(ch) <= 57 for ch in s)

当您一次将每个字符与所有数字进行比较时,您需要从列表中删除数字,即
“1”==“0123456789”
,您还需要在返回True之前检查每个字符:

def is_dig(s):
    numbers = "0123456789"  # single iterable of the numbers
    for i in s:
        if i not in numbers:
            return False
    return bool(s) # return outside the loop also catching empty string
更有效的方法是使用ord和
all

def is_dig(s):
    return len(s) > 0 and all(48 <= ord(ch) <= 57 for ch in s)
number=“0123456789”

感谢Padraic和所有人的投入@在霍夫曼之前,你的答案正是我想要的


感谢Padraic和所有人的投入@在霍夫曼之前,你的答案正是我想要的

你可能不想把
数字
作为单个字符串的数组,而只是数字字符串。提示:您不希望函数在字符串中找到一个数字后立即返回True。您需要移动
返回True
。若要添加到前面的注释中,请查看ascii表格如果len(str)>0:
在许多方面是多余的,则您的
。。。如果要检查某个值是否大于0,可以使用
if len(str):
。。。但是如果你想检查一个字符串是否有长度,那么你只需要
如果str:
。。。但无论如何,没有必要检查。。。您可以循环一个空字符串(不会有迭代),您可能不希望将
数字
作为单个字符串的数组,而只是数字字符串。提示:您不希望函数在字符串中找到一个数字后立即返回True。您需要移动
返回True
。若要添加到前面的注释中,请查看ascii表格如果len(str)>0:
在许多方面是多余的,则您的
。。。如果要检查某个值是否大于0,可以使用
if len(str):
。。。但是如果你想检查一个字符串是否有长度,那么你只需要
如果str:
。。。但无论如何,没有必要检查。。。您可以在空字符串上循环(不会有迭代),但这并没有按照您所说的对空字符串应该执行的操作。“如果其中任何一个不是自然数,那么程序将返回False”-这对于空字符串不成立(空字符串中的所有字符都是数字),因此它应该返回True。相反,您的代码返回None,这甚至不是两个选项中的一个。这不符合您对空字符串的要求。“如果其中任何一个不是自然数,那么程序将返回False”-这对于空字符串不成立(空字符串中的所有字符都是数字),因此它应该返回True。相反,您的代码返回None,这甚至不是两种选择之一。