以表示密码的字符串作为输入并返回所有数字字符的递归函数检查(0 9)

2024-06-28 15:02:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个问题,下面是我的代码。我需要一些帮助。你知道吗

编写一个递归函数检查,以表示密码的字符串作为输入,并返回所有数字字符(0-9)

def check(s):
    if not s.idigit():
        return
    else:
        return check(s.isdigit())

Tags: 字符串代码密码returnifdefchecknot
2条回答
def check(s):
    if len(s) == 0:
        return ''
    elif s[0].isdigit():
        return s[0] + check(s[1:])
    else:
        return check(s[1:])

举个例子

print(repr(check('12a3z-4!')))

这个指纹

'1234'

这就是你想要的。有其他方法可以编写此代码,但对于Python初学者来说,这可能是最简单的方法。你知道吗


从上一条评论中,您可能希望打印出密码中的数字,从大到小,每一个都在单独的行中,并且您不关心从函数返回任何内容。如果那是你想要的,试试看

def check(s):
    if len(s) > 0:
        check(s[1:])
        if s[0].isdigit():
            print(s[0])

check('31a4z-2!')

这个指纹

2
4
1
3

递归有两个主要部分:

  1. 基本情况:当您点击最琐碎的输入时返回什么。你知道吗
  2. 递归案例:如何将问题简化为更简单的问题。你知道吗

你的基本情况是

if s == '':
    return ''

递归的大小写取决于前导字符是否是数字。如果是,则希望将其添加到构建的字符串中;如果不是,则没有要添加的内容。无论哪种方式,都可以调用字符串的其余部分的例程:

add = ''
if s[0].isdigit():
    add = s[0]

之后,调用字符串其余部分的例程。当返回时,将其返回值与add组合,并将返回给调用程序。你知道吗

这让你感动吗?你知道吗

相关问题 更多 >