【问题标题】:Change to upper and lower case in python在python中更改为大写和小写
【发布时间】:2014-11-04 20:45:42
【问题描述】:

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

谢谢!

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

【问题讨论】:

  • 你需要清楚你想要你的程序做什么。在你的情况下,“AlbErT”它总是回退到 else btw。
  • 为什么总是回退到else?
  • “AlbErT”中没有小写元音。试试 changeCaps("aeiou") 看看有什么不同。

标签: python uppercase lowercase


【解决方案1】:

doubleo 在他的两个 cmets 中所说的是正确的:因为 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")

(谢谢,安东!)

【讨论】:

  • 如果您执行 for 循环,那么为什么要使用索引 i?您可以直接遍历字符串中的字符,例如for c in string: ...
  • 好点。我忘记了。我记得在使用真实列表时这一事实,但由于某种原因,在使用字符串时我会忘记这一点。绝对是更好的选择。
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 2020-04-29
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多