切换字母大小写

问题描述 投票:-2回答:1

我正在尝试以下问题:

定义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
python string loops for-loop
1个回答
2
投票

主要问题是字符串是不可变的

所以代码无法在原位置更改字符串。下面的代码返回一个带有替换的新字符串。

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
© www.soinside.com 2019 - 2024. All rights reserved.