【发布时间】:2017-05-19 06:46:54
【问题描述】:
我正在尝试解决this challenge in hackerrank,它要求将所有小写字母转换为大写字母,反之亦然。
我尝试使用以下代码:
def swap_case(s):
length = len(s)
i=0
while length:
if s1[i].isupper():
s[i].lower()
elif s[i].islower():
s[i].upper()
length-=1
i+=1
return s
if __name__ == '__main__':
s = input()
result = swap_case(s)
print(result)
但是返回的字符串与传递给函数的字符串相同。哪里错了?
【问题讨论】:
-
字符串是不可变的。
s[i].upper()返回s[i]的大写“副本”,它不会修改s[i]本身。您需要完全创建一个新的字符串对象... -
就像@Julien 提到的那样,您实际上并没有更改原始字符串。考虑使用另一个变量来保存每个新更新,并返回该新变量
-
另外,对于它的价值,Python 已经有一个内置函数可以做到这一点:
str.swapcase()。 -
这能回答你的问题吗? Swapping uppercase and lowercase in a string
标签: python string python-3.x