猿问

从递归函数中获取两个不同的值?

我正在尝试在python中创建一个函数,将一个字符串拆分为两个字符串,其中第一个字符串包含所有小写字母+一些其他特殊字符,第二个字符串包含所有大写字母+特殊字符。


重点是能够输入:


>>> first_message,second_message=string_split("SomEChaRacTers")

>>> print(first_message, second_message)

打印结果。


这就是我现在所拥有的:


def string_split(string):

    first_message_signs = "_."

    second_message_signs = " |"

    one = ""

    two = ""

    if len(string) == 0:

        return string

    

    if string[0].islower() or string[0] in first_message_signs:

        one += string[0] + string_split(string[1:])

        return one

    

    elif string[0].isupper() or string[0] in second_message_signs:

        two += string[0] + string_split(string[1:])

        return two

    else:

        return string_split(string[1:])

在提示中进行第一次调用时出现此错误: Traceback (most最近的调用最后): File "", line 1, in ValueError: Too much values to unpack (expected 2)


当我尝试仅使用 message_one 时,我得到一个字符串中的所有字符。


我应该怎么办?


跃然一笑
浏览 113回答 1
1回答

芜湖不芜

你的第一行first_message,second_message=string_split("SomEChaRacTers")期望string_split返回两个值。然而,你的函数只返回一个。你想要的是def string_split(string):    first_message_signs = "_."    second_message_signs = " |"    one = ""    two = ""    if len(string) == 0:        return one, two        if string[0].islower() or string[0] in first_message_signs:        one += string[0]    elif string[0].isupper() or string[0] in second_message_signs:        two += string[0]    ret1, ret2 = string_split(string[1:])    one += ret1    two += ret2    return one, two顺便说一句,没有令人信服的理由需要string_split递归。尝试这个:def string_split(string):    first_message_signs = "_."    second_message_signs = " |"    one = ''.join(c for c in string if c.islower() or c in first_message_signs)    two = ''.join(c for c in string if c.isupper() or c in second_message_signs)    return one, two
随时随地看视频慕课网APP

相关分类

Python
我要回答