我的作业要求我遍历字符串中的每个字母,偶数索引为大写,奇数索引为小写。 它应该保留所有标点符号或数字不变,并且应该以偶数索引更改每个字母的大小写。 这意味着,如果字母最初是大写字母,则应将其转换为小写字母。
例如: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!"。
您的代码当前已使其具有奇数索引的字母变为小写而具有偶数索引的字母变为大写。
如果只希望偶数索引上的字母从小写变为大写,或从大写变为小写,则应使用以下方法:
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
您在每个字符而不是每个字母之后增加索引。 其中包括标点符号,空格,数字之类的字符。
您需要添加条件语句,然后使用isalpha()函数递增索引:
If letter.isalpha()
Index += 1
另外,您需要添加另一个条件语句来检查偶数字母是否已经大写,以便您切换大小写。