python - 如何使用 if 语句使 for 循环遍历字符串中的每个项目?

标签 python

我正在尝试创建一个函数,该函数接收用户的字符串,然后输出相同的字符串。然而,对于偶数位置的每个字母,它输出相应的小写字母,对于奇数位置的每个字母,它输出相应的大写字母。请记住,一次只能传递一个单词。

我尝试创建一个 for 循环,并在其中嵌套一个 if 语句,但到目前为止,for 循环在迭代第一个字母后停止。我的代码如下:

def converter(string):
    for letters in string:
        if len(letters) % 2 == 0:
            return letters.lower()
        elif len(letters)% 2 != 0:
            return letters.upper()

当我运行代码时:
转换器('应用程序')

我得到的输出是“A”
预期输出应为“aPp”

最佳答案

您需要知道的第一件事是,在 Python 中,字符串是不可变的。因此,“修改”字符串意味着您必须从头开始构建一个新字符串(在这里,我称之为 newstring)。

其次,您误解了循环。您说的是字符串中的字母。该循环遍历字符串的每个字母。在第一次迭代中,letters 是强的第一个字母。然后将其转换为大写(因为单个字母的长度始终为 1)并返回。您还没有读到其余的字母!在下面的代码中,我将复数更改为仅字母以使这个想法更加清晰。

这解决了所有这些问题:

def converter(string):
    newstring = ""
    for i, letter in enumerate(string):
        if i % 2 == 0:
            newstring += letter.lower()
        elif i % 2 != 0:
            newstring += letter.upper()
    return newstring

这可以归结为一个很好的列表理解:

def converter(string):
    return "".join([letter.lower() if i % 2 == 0 else letter.upper()
                    for i, letter in enumerate(string)])

关于python - 如何使用 if 语句使 for 循环遍历字符串中的每个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343688/

相关文章:

python - 简单的键盘记录器 "Problem in logging to a file"

python - 使用多个类似的 "while"语句缩短代码

python - pandas 中的 .apply 与 .replace?

python - 如何在列表中打印列表的最大大小

python - 使用不在索引中的元素切片 Pandas 系列

python - 如何合并两个表并从 Python 中每个单元格中的先前值计数中划分数字实例?

python - 创建一个列表,包括行名、列名和数据框中的值

python - Noob-Ready Cython 教程

python - Tkinter:root.after(), root.after_cancel()

python - 如何检查此用户是匿名用户还是我系统上的实际用户?