遍历字符串中的每个字母,偶数索引为大写,奇数索引为小写

时间:2019-08-18 10:29:39

标签: python python-3.x

我的作业要求我遍历字符串中的每个字母,偶数索引为大写,奇数索引为小写。它应保留所有标点符号或数字不变,并应以偶数索引更改每个字母的大小写。这意味着,如果该字母最初是大写字母,则应将其转换为小写字母。

例如:mock(“ Abcd。Efgh .. Ijkl!”)将返回“ abCd。efGh .. IJkL!”。偶数索引字母(A,C,E,g,j,l)更改大小写,其他所有字符均不变。

我尝试将其换行,并尝试将其拆分并重新加入字符串。但是我无法正常工作。

def mock(word):
    index = 0
    result = ''
    swap = word.swapcase()

    for letter in swap:
        if index % 2 == 0:
            result += letter.upper()
        else:
            result += letter.lower()
        index += 1
    return result

我们使用a_str =“ Abcd。Efgh .. Ijkl!”测试了您的代码。我们期望模拟返回str“ abCd。efGh .. IJkL!”。但是,它返回了str“ aBcD。eFgH .. IjKl!”。

2 个答案:

答案 0 :(得分:0)

您在每个字符而不是每个字母之后增加索引。其中包括标点符号,空格,数字之类的字符。

在使用isalpha()函数递增索引之前,需要添加条件语句:

If letter.isalpha()
  Index += 1

此外,您需要添加另一个条件语句来检查偶数字母是否已经大写,以便您切换大小写。

答案 1 :(得分:0)

您的代码当前已实现,因此具有奇数索引的字母将变为小写,而具有偶数索引的字母将变为大写。 如果只希望偶数索引上的字母从小写变为大写,或从大写变为小写,则应使用以下方法:

def mock(word):
index = 0
result = ''
for letter in word:
    if index % 2 == 0:
        if letter.isupper():
            result += letter.lower()
        else:
            result += letter.upper()
    else:
        result += letter
    index += 1
return result