在Python中转换大小写
我试着运行这个程序,但不知道为什么字符串只变成了小写字母。元音字母没有变成小写。你们知道这是为什么吗?
谢谢!
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!)