如何在字符串中大写偶数字母和小写奇数字母?

新手上路,请多包涵

我正在创建一个函数,它接受一个字符串并返回一个匹配的字符串,其中每个偶数字母都是大写的,每个奇数字母都是小写的。该字符串只包含字母

我尝试了一个 for 循环,该循环使用 if 语句循环遍历字符串的长度,该语句检查索引是否为偶数以返回该索引的大写字母,如果索引为奇数则返回该索引的小写字母。

 def my_func(st):
    for index in range(len(st)):
        if index % 2 == 0:
            return st.upper()
        else:
            return st.lower()

我希望偶数字母大写,奇数字母小写,但我只得到整个字符串的大写字母。

原文由 didikimoiny225 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您的代码中的一些问题:

  • 当前,您正在从第一个索引本身的函数返回,即 index=0 当您执行 return st.lower() 时,该函数将在遇到第一个索引并跳出 for 后停止执行环形

  • st.lower()st.upper() 结束大写/小写整个字符串,而不是你想要大写/小写单个字符

一种方法是遍历字符串,收集列表中所有修改的字符,通过 str.join 将该列表转换为字符串,然后在最后返回结果

您还想通过索引引用每个单独的字符。

 def my_func(st):

    res = []
    #Iterate over the character
    for index in range(len(st)):
        if index % 2 == 0:
            #Refer to each character via index and append modified character to list
            res.append(st[index].upper())
        else:
            res.append(st[index].lower())

    #Join the list into a string and return
    return ''.join(res)

您还可以使用 枚举 同时遍历索引和字符

def my_func(st):

    res = []
    #Iterate over the characters
    for index, c in enumerate(st):
        if index % 2 == 0:
            #Refer to each character via index and append modified character to list
            res.append(c.upper())
        else:
            res.append(c.lower())

    #Join the list into a string and return
    return ''.join(res)
print(my_func('helloworld'))

输出将是

HeLlOwOrLd

原文由 Devesh Kumar Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以预先存储您的操作并在 joinenumerate 中使用它们:

 def my_func(st):
    operations = (str.lower, str.upper)
    return ''.join(operations[i%2](x) for i, x in enumerate(st))

print(my_func('austin'))
# aUsTiN

原文由 Austin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题