То, что doubleo сказал в своих двух комментариях, правильно: поскольку A и E в AlbErt уже написаны с большой буквы, они не равны строчным 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")
(Спасибо, Антон!)
person
PCGuyIV
schedule
11.09.2014