Переключите регистр букв - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь решить следующую проблему:

Определить String.prototype.toAlternatingCase (или подобную функцию / метод, такой как to_alternating_case / toAlternatingCase / ToAlternatingCase на выбранном вами языке; см. первоначальное решение для деталей), так что каждая строчная буква становится заглавной, а каждая заглавная буква становится строчной.

Это то, что я пробовал до сих пор, но я не знаю, почему это не работает. Пожалуйста, примите во внимание, что я только начал программировать, поэтому я могу делать очень простые c ошибки:

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

1 Ответ

4 голосов
/ 07 апреля 2020

Проблема в том, что строки неизменны.

Таким образом, эта строка возвращает новую строку, а не заменяет символ в строке.

string.replace(char, string.upper())

Исправлено Отправленный код

def to_alternating_case(string):
    result = ""
    for char in string:
        if ord(char) in range(97, 123):
            result += char.replace(char, char.upper())  # replace invidivual character
        elif ord(char) in range (65,91):
            result += char.replace(char, char.lower())  # replace invidivual character
        else:                                          # characaters outside [a-zA-Z] unchanged
            result += char
    return result

print(to_alternating_case("heLLo"))  # Outputs "HEllO"

Переписать код

Упрощенный метод.

def to_alternating_case(string):
    return ''.join(c.upper() if c.islower() else c.lower() for c in string)

print(to_alternating_case("heLLo"))  # Outputs "HEllO"
...