我正在尝试以下问题:
定义
String.prototype.toAlternatingCase
(或所选语言中的类似功能/方法,例如to_alternating_case
/toAlternatingCase
/ToAlternatingCase
;有关详细信息,请参见初始解决方案),以使每个小写字母变为大写,而每个大写字母变为小写。
这是我到目前为止已经尝试过的方法,但是我真的不知道为什么它不起作用。请考虑到我刚刚开始编码,所以我可能会犯一些非常基本的错误:
def to_alternating_case(string):
for char in string:
if ord(char) in range(97, 123):
string.replace(char, string.upper())
elif ord(char) in range (65,91):
string.replace(char, string.lower())
elif ord(char) in range (32, 48):
continue
else:
return '//Non-alphabetical characters are unaffected'
return string
主要问题是字符串是不可变的
所以代码无法在原位置更改字符串。下面的代码返回一个带有替换的新字符串。
string.replace(char, string.upper())
但是,功能可以简化为:
def to_alternating_case(string):
return ''.join(c.upper() if c.islower() else c.lower() for c in string)
s = "hElo"
print(to_alternating_case(s)) # prints HeLO