亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Python中index()以外的方法將字符串中的每個第二個字母變成大寫?

使用Python中index()以外的方法將字符串中的每個第二個字母變成大寫?

波斯汪 2023-07-18 10:06:26
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 mystringprint(myfunc('committee')) #Doesn't workprint(myfunc('ilovehoney')) #Does work我相信我的代碼中的錯誤是index(),因為它無法識別字符串中的重復字母。有誰知道我可以使用不同的方法?第一個示例中的輸出是“cOmmiTTEE”,但應該是“cOmMiTtEe”,而第二個示例中的輸出是我想要的“iLoVeHoNeY”。雖然我不確定為什么我的函數在第二個示例中突然起作用。謝謝您的幫助。
查看完整描述

3 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

enumerate() 給出當前循環的索引:


s = 'committee'

"".join([x.upper() if i%2!=0 else x for i,x in enumerate(s)])

Out[4]: 'cOmMiTtEe'


查看完整回答
反對 回復 2023-07-18
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您可以使用enumerate從可迭代對象中獲取索引和值:


for idx, x in enumerate(mylist):

    if idx % 2 == 0:

        mystring = mystring + x.lower()

    else:

        mystring = mystring + x.upper()


查看完整回答
反對 回復 2023-07-18
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

您根本不需要知道確切的索引。只需翻轉一面旗幟即可:不-是-否-是-否-等等。


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)


查看完整回答
反對 回復 2023-07-18
  • 3 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號