大写字母表中的每个其他字母

时间:2018-04-19 18:59:09

标签: python string python-3.x function

这是我的代码:

def mock(s):
    ret = ""
    i = True  
    for char in s:
        if i:
            ret += char.upper()
        else:
            ret += char.lower()
        if char != ' ':
            i = not i
    return ret
print(mock("abcd efgh ijkl"))

输出:

AbCd EfGh IjKl

但必须是这样的:

AbCd eFgH IjKl

我不知道我做错了什么以及我该怎么做才能解决它。

2 个答案:

答案 0 :(得分:3)

您可以使用简单的理解和join()

s = 'abcd efgh ijkl'
morph = ''.join([e.upper() if i%2==0 else e for i, e in enumerate(s)])
print(morph)

输出:

AbCd eFgH IjKl

请注意,这并非技术上大写每个其他字母(除非您将空格视为字母),而是将所有其他索引大写,根据您所需的输出,它似乎是您想要的。

要修复当前代码,您需要做的就是替换:

if char != ' ':
    i = not i

使用:

i = not i

答案 1 :(得分:1)

def mock(s):
    ret = ""
    i = True  
    for char in s:
        if i:
            ret += char.upper()
        else:
            ret += char.lower()

        i = not i

    return ret
print(mock("abcd efgh ijkl"))

输出:

AbCd eFgH IjKl

预期输出不关心空格