在Python中转换大小写

3 投票
1 回答
8934 浏览
提问于 2025-04-21 00:28

我试着运行这个程序,但不知道为什么字符串只变成了小写字母。元音字母没有变成小写。你们知道这是为什么吗?

谢谢!

def changeCaps(string):
        i = 0
        while i < len(string):
            if string[i] == 'a' or string[i] == 'e' or string[i] == 'i' or string[i] == 'o' or string[i] =='u':
                print(string[i].upper())
                i = i + 1
            else:
                print(string[i].lower())
                i = i + 1
    changeCaps("AlbErT") 

1 个回答

2

doubleo在他的两个评论中说得对:因为“AlbErt”中的“A”和“E”已经是大写的,所以它们和小写的“a”和“e”是不一样的。因此,它们会和所有的辅音字母一起变成小写。如果你想改变任何输入字母的大小写,那就需要用不同的方法来处理。可以参考下面这样的代码:

def changeCaps(string):
        i = 0
        while i < len(string):
            if string[i].islower():
                print(string[i].upper())
                i = i + 1
            else:
                print(string[i].lower())
                i = i + 1
changeCaps("AlbErT")

这样做会把所有的大写字母变成小写,而小写字母则变成大写,至于它是元音还是辅音就没关系了。

另外,为什么不使用for循环呢?这样做同样有效,而且代码行数会更少:

def changeCaps(string):
    for i in range(len(string)):
        if string[i].islower():
            print(string[i].upper())
        else:
            print(string[i].lower())
changeCaps("AlbErT")

好吧,虽然只节省了两行代码,但我觉得用for循环更合理。不管怎样,最终的输出结果会是:

aLBeRt

最后,正如Anton所指出的,你其实不需要数字指针,只需遍历字符串就可以了。

def changeCaps(string):
    for c in string:
        if c.islower():
            print(c.upper())
        else:
            print(c.lower())
changeCaps("AlbErT")

(谢谢,Anton!)

撰写回答