我正在创建一个函数,它接受一个字符串并返回一个匹配的字符串,其中每个偶数字母都是大写,每个奇数字母都是小写。字符串只包含字母
我尝试了一个 for 循环,它使用 if 语句遍历字符串的长度,该语句检查索引是否为偶数返回该索引的大写字母,以及索引是否为奇数以返回该索引的小写字母。
def my_func(st):
for index in range(len(st)):
if index % 2 == 0:
return st.upper()
else:
return st.lower()
Run Code Online (Sandbox Code Playgroud)
我希望偶数字母大写,奇数字母小写,但我只得到整个字符串的大写。
您的代码中的一些问题:
当前,您正在从第一个索引本身的函数返回,即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)
Run Code Online (Sandbox Code Playgroud)
您还可以使用enumerate同时迭代索引和字符
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'))
Run Code Online (Sandbox Code Playgroud)
输出将是
HeLlOwOrLd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19070 次 |
| 最近记录: |