使用Python中index()以外的方法将字符串中的每个第二个字母变成大写?

def myfunc(mylist = str):

mystring = ''

for x in mylist:

    if mylist.index(x) % 2 == 0:

        mystring = mystring + x.lower()

    else:

        mystring = mystring + x.upper()

return mystring

print(myfunc('committee')) #Doesn't work

print(myfunc('ilovehoney')) #Does work

我相信我的代码中的错误是index(),因为它无法识别字符串中的重复字母。有谁知道我可以使用不同的方法?第一个示例中的输出是“cOmmiTTEE”,但应该是“cOmMiTtEe”,而第二个示例中的输出是我想要的“iLoVeHoNeY”。虽然我不确定为什么我的函数在第二个示例中突然起作用。谢谢您的帮助。


波斯汪
浏览 141回答 3
3回答

Smart猫小萌

enumerate() 给出当前循环的索引:s = 'committee'"".join([x.upper() if i%2!=0 else x for i,x in enumerate(s)])Out[4]: 'cOmMiTtEe'

慕婉清6462132

您可以使用enumerate从可迭代对象中获取索引和值:for idx, x in enumerate(mylist):    if idx % 2 == 0:        mystring = mystring + x.lower()    else:        mystring = mystring + x.upper()

哈士奇WWW

您根本不需要知道确切的索引。只需翻转一面旗帜即可:不-是-否-是-否-等等。def myfunc(mylist):    mystring = ''    upper = False    for x in mylist:        mystring = mystring + (x.upper() if upper else x.lower())        upper = not upper    return mystring请注意,以这种方式构造字符串效率很低(将“Shlemiel the Painter”搜索到谷歌)。改良版:def myfunc(mylist):    mychars = []    upper = False    for x in mylist:        mychars.append(x.upper() if upper else x.lower())        upper = not upper    return ''.join(mychars)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python