在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,这甚至不是两种选择之一。