【问题标题】:Change selected characters in a string using loop使用循环更改字符串中的选定字符
【发布时间】:2022-01-22 15:22:51
【问题描述】:

我正在编写一个函数来更改字符串中偶数字母的字母大小写(空格/标点符号被忽略)。即,从"Abcd. Efgh.. Ijkl!""abCd. efGh.. IJkL!"

我的代码只更改了第一个字母。最初我认为我的问题是 replace() 函数,所以我改用 .append() 函数,但结果仍然保持不变:['abcd. Efgh.. Ijkl!']

如何更改代码以捕获每个循环的结果?

def mock(string):
    new_string=[]
    new_letter=""
    for letter in string[::2]:
        if letter.islower():
            new_letter= letter.upper()
            new_string.append(string.replace(letter,new_letter))
            
        elif letter.isupper():
            new_letter= letter.lower()
            new_string.append(string.replace(letter,new_letter))

        return new_string

print(mock("Abcd. Efgh.. Ijkl!")) 

【问题讨论】:

    标签: python-3.x string loops


    【解决方案1】:

    您应该使用.replace().append().replace() 将替换所有出现(不仅仅是偶数)。您可以将代码重写为:

    def mock(string):
        new_string = []
        for index, letter in enumerate(string):
            new_letter = letter
            if index % 2 == 0:
                if letter.islower():
                    new_letter= letter.upper()
                elif letter.isupper():
                    new_letter= letter.lower()
            new_string.append(new_letter)
        return "".join(new_string)
    

    您也可以使用列表推导。单行实现将是

    return "".join(s if i%2 else s.swapcase() for i, s in enumerate(string))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-22
      • 2020-05-18
      • 2019-04-15
      • 1970-01-01
      • 2021-10-11
      • 2021-06-10
      • 2018-03-17
      • 1970-01-01
      相关资源
      最近更新 更多