问题描述
def swap_case(string):
pos = 0
while pos < len(string):
if string[pos].isupper():
return string[pos].lower()
else:
return string[pos].upper()
pos = pos + 1
print(swap_case('Hello'))
这是我尝试过的,但是它只转换输入字符串中的第一个字母,没有其他字母,任何人都可以帮助我理解如何正确编写此代码。我是初学者。
解决方法
您代码中的错误是 return
语句在第一次迭代后过早,这就是为什么只返回第一个字母的原因。
不鼓励使用 'string' 作为变量,因为它是一个保留字,例如
import string
letters = list(string.ascii_lowercase)
我还将字符串 s 转换为列表 ['H','e','l','o']
,以便可以遍历每个字母以检查/更改大小写。
最后可以用''.join(s)
返回转换后的列表
def swap_case(s):
pos = 0
s = list(s)
while pos < len(s):
if s[pos].isupper():
s[pos] = s[pos].lower()
else:
s[pos] = s[pos].upper()
pos = pos + 1
return ''.join(s)
print(swap_case('Hello'))
输出
hELLO
另一种方式是使用列表推导,输出同上
def swap_case(s):
return ''.join([x.lower() if x.isupper() else x.upper() for x in list(s)])
print(swap_case('Hello'))