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