Найти - Пользователи
Полная версия: Не подскажите, как разработать метод в классе SuperStar?
Начало » Центр помощи » Не подскажите, как разработать метод в классе SuperStar?
1
Xryst
Задача:
Разработать класс SuperStar, который следует функциональность стандартного типа str
и содержит 2 новых метода:
1. метод is_repeatance (s), который принимает 1 аргумент s и возвращает True или False в
зависимости от того, может быть текущую строку быть получен целой
количеством повторов строки s. Вернуть False, если s не является строкой. Считать, что
пустая строка не содержит повторов.
2. метод is_palindrom (), который возвращает True или False в зависимости от того, является ли
строка палиндромом. Регистрами символов пренебрегать. Пустая строка считать
палиндромом.
Пример:
s = SuperStr('123123123123')
print s.is_repeatance('123') # True
print s.is_repeatance('123123') # True
print s.is_repeatance('123123123123') # True
print s.is_repeatance('12312') # False
print s.is_repeatance(123) # False
print s.is_palindrom() # False
print s # 123123123123 (рядок)
print int(s) # 123123123123 (ціле число)
print s + ‘qwe’ # 123123123123qwe
p = SuperStr('123_321')
print p.is_palindrom() # True
P.S. Метод is_repeatance (s), я ввобще не могу понять как делать, метод метод is_palindrom (), я сделал вот так, но не могу понять как передавать данные в метод:
import sys
class SuperStr(str):   
 def is_palindrom(s):
   if (s.lower() == s[::-1].lower():
    return true
   else:
       return false
При запуска запускается консоль и все:

Подскажете, что я сделал не так в методе is_palindrom? Как разработать метода is_repeatance (s)???

Спасибо!
py.user.next
class SuperStr(str):
    
    def is_repeatance(self, s):
        if not isinstance(s, str):
            return False
        n = len(self) // (len(s) or 1)
        return self == n * s
    
    def is_palindrome(self):
        s = self.lower()
        return s == s[::-1]
Xryst
py.user.next
А что делает эта строка: n = len(self) // (len(s) or 1)??? И метод s1.is_repeatance('6786') не выдает false и вот такой проверки не выдает не чего s1.is_repeatance('678'), а должно выдавать true?? И метод def is_palindrome, видет себя так же.
Спасибо за понимание…
py.user.next
>>> class SuperStr(str):
...     
...     def is_repeatance(self, s):
...         if not isinstance(s, str):
...             return False
...         n = len(self) // (len(s) or 1)
...         return self == n * s
...     
...     def is_palindrome(self):
...         s = self.lower()
...         return s == s[::-1]
... 
>>> sup = SuperStr('123123123123')
>>> sup.is_repeatance('123')
True
>>> sup.is_repeatance('123123')
True
>>> sup.is_repeatance('123123123123')
True
>>> sup.is_repeatance('12312')
False
>>> sup.is_repeatance(123)
False
>>> sup.is_palindrome()
False
>>> sup = SuperStr('123_321')
>>> sup.is_palindrome()
True
>>>

Xryst
А что делает эта строка
Вычисляет, сколько раз по длине подстрока может поместиться в строке, учитывая, что подстрока может быть пустой.
Xryst
Так у меня на компьютеры тоже все так же выходит, а на сайте когда проверяю ошибки:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
py.user.next
Что-то неправильно, значит, вводишь там на сайте. not defined нигде не должно быть.
Xryst
Ну так на сайте, я вводил код:
TroSer
SuperStar != SuperStr
py.user.next
Xryst
Ну так на сайте, я вводил код:
Ну, во-первых, SuperStar (суперзвезда), хотя должно быть SuperStr (суперстрока), а во-вторых, там какой-то return не только лишний, так ещё и неправильный, потому что возвращает true, хотя такой константы в языке нет.
Отсюда можешь копировать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB