Чувствительность к регистру

Задачка на Codewars.

Check to see if a string has the same amount of 'x's and 'o's. The method must return a boolean and be case insensitive. The string can contain any char.
Проверьте, имеет ли строка одинаковое количество регистронезависимых символов. Строка может содержать любой символ.

Examples input/output:

XO("ooxx") => true
XO("xooxx") => false
XO("ooxXm") => true
XO("zpzpzpp") => true // when no 'x' and 'o' is present should return true
XO("zzoo") => false

мой код:

def xo(s):
    z = s.count('x')
    x = s.count('o')
    if z == x:
        return True
    else:
        return False

первые проверки проходит но когда начинает проверять на рандомные значения s, выдает ошибку: "Comparison is case-insensitive" (Сравнение не чувствительно к регистру). Но ведь условие было изначально, что именно регистронезависимые?! Это баг или я что-то неправильно сделал?!

Не могу теперь допенькать как в мой код добавить isupper или что-то вроде этого чтоб проверял на РеГиСтР.


Ответы (1 шт):

Автор решения: owoDAKowo

У строк есть метод lower() и upper() которая возвращает копию исходной строки с символами приведёнными к нижнему/верхнему регистру. Соответственно следует добавить следующее и всё заработает.

z = s.lower().count('x') 
x = s.lower().count('o')
→ Ссылка