如何创建 while 循环,将字符串中的所有小写字母交换为大写,反之亦然?

问题描述

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'))