Python列表和for循环。如何与for循环进行通信,以便我打算处理后续项目,而不是只处理第一个项目?

2024-10-08 18:23:22 发布

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

我是python的新手,我正在开发一个函数,我希望它传递一个类似abcd的字符串,它输出类似A-Bb-Ccc-Dddd的内容。在

我创造了以下。在

`

def mumbler(s):
    chars = list(s)
    mumbled = []
    result = []
    for char in chars:
        caps = char.upper()
        num = chars.index(char)
        low = char.lower()
        mumbled.append( caps+ low*num)
    for i in mumbled:
        result.append(i+'-')
        result = ''.join(result)
    return result[:-1]

`

它在大多数情况下都有效。但是,当我传递一个像Abcda这样的字符串时。它无法返回预期的输出,在本例中,A-Bb-Ccc-Dddd-Aaaaa。 我该怎么解决这个问题? 感谢您抽出时间回答这个问题。在


Tags: 字符串inforresultcapsnumlowccc
3条回答

如果您想让自己的代码正常工作,只需将result列表转换为第二个for循环之外的字符串:

def mumbler(s):
    chars = list(s)
    mumbled = []
    result = []
    for char in chars:
        caps = char.upper()
        num = chars.index(char)
        low = char.lower()
        mumbled.append( caps+ low*num)
    for i in mumbled:
        result.append(i+'-')
    result = ''.join(result)
    return result[:-1]

mumbler('Abcda')
'A-Bb-Ccc-Dddd-Aaaaa'

count上使用一个简单的1-liner-next()来保持重复的时间,title()用于标题大小写:

from itertools import count

s = 'Abcda'
i = count(1)

print('-'.join([(x * next(i)).title() for x in s]))
# A-Bb-Ccc-Dddd-Aaaaa

您可以使用列表理解和^{cd1>}以更简单的方式完成此操作

>>> s = 'abcd'
>>> '-'.join([c.upper() + c.lower()*i for i,c in enumerate(s)])
'A-Bb-Ccc-Dddd'

相关问题 更多 >

    热门问题