在python中更改为大写和小写

时间:2014-09-11 02:58:52

标签: python uppercase lowercase

我尝试运行此程序,但由于某种原因,字符串只更改为小写。元音不会变成小写。关于为什么的任何想法?

谢谢!

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 个答案:

答案 0 :(得分: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

最后一点,正如安东指出的那样,你甚至不需要一个数字指针,只需要翻看字符串。

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

(谢谢,安东!)