Форум сайта python.su
Задача:
Разработать класс 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
Отредактировано Xryst (Апрель 23, 2015 16:02:50)
Офлайн
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]
Отредактировано py.user.next (Апрель 24, 2015 23:58:53)
Офлайн
py.user.nextА что делает эта строка: n = len(self) // (len(s) or 1)??? И метод s1.is_repeatance('6786') не выдает false и вот такой проверки не выдает не чего s1.is_repeatance('678'), а должно выдавать true?? И метод def is_palindrome, видет себя так же.
Отредактировано Xryst (Апрель 24, 2015 15:12:36)
Офлайн
>>> 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Вычисляет, сколько раз по длине подстрока может поместиться в строке, учитывая, что подстрока может быть пустой.
А что делает эта строка
Отредактировано py.user.next (Апрель 25, 2015 00:05:34)
Офлайн
Так у меня на компьютеры тоже все так же выходит, а на сайте когда проверяю ошибки:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Офлайн
Что-то неправильно, значит, вводишь там на сайте. not defined нигде не должно быть.
Офлайн
Ну так на сайте, я вводил код:
Офлайн
SuperStar != SuperStr
Офлайн
XrystНу, во-первых, SuperStar (суперзвезда), хотя должно быть SuperStr (суперстрока), а во-вторых, там какой-то return не только лишний, так ещё и неправильный, потому что возвращает true, хотя такой константы в языке нет.
Ну так на сайте, я вводил код:
Офлайн