Форум сайта python.su
Добрый вечер!
Есть класс str, у него есть метод upper()
Нужно переопределить этот метод, чтобы он каждый нечетный символ делал в верхнем регистре, а каждую четную в нижнем.
Правильный ли ход моих мыслей?:
class str:
def upper(self):
{тут цикл по обходу всех букв и приведение их к нужным регистрам}
Офлайн
Можешь так сделать
>>> class Str(str): ... def upper(self): ... return self[0].upper() + self[1:] ... >>> str = Str >>> >>> s = str('abc') >>> s.upper() 'Abc' >>>
>>> str <class '__main__.Str'> >>> type('') <class 'str'> >>> >>> 'abc'.upper() 'ABC' >>> >>> str('abc').upper() 'Abc' >>>
Офлайн
> Можешь так сделать
А если выучить методы строк, то можно и так
class Str(str): upper = str.capitalize a = Str("aaaa") print(a.upper()) 'Aaaa'
Офлайн
RodegastДа нет, это не одно и то же.
А если выучить методы строк, то можно и такclass Str(str): upper = str.capitalize a = Str("aaaa") print(a.upper()) 'Aaaa'
>>> class Str(str): ... def upper(self): ... return self[0].upper() + self[1:] ... >>> s = 'сегодня в нашем ООО "Сириус" мы изучаем Python' >>> >>> Str(s).upper() 'Сегодня в нашем ООО "Сириус" мы изучаем Python' >>> >>> s.capitalize() 'Сегодня в нашем ооо "сириус" мы изучаем python' >>>
Офлайн
st = "This is StrIng oOo" res = "".join([val.upper() if not pos % 2 else val.lower() for pos, val in enumerate(st)]) ic(res) "ic| res: 'ThIs iS StRiNg oOo'"
Офлайн
> Да нет, это не одно и то же.
Какая разница? Чуваку всё равно нужно совсем другое
Офлайн