Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 23, 2015 15:38:42

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

Задача:
Разработать класс 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)???

Спасибо!

Отредактировано Xryst (Апрель 23, 2015 16:02:50)

Офлайн

#2 Апрель 24, 2015 00:37:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

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)

Офлайн

#3 Апрель 24, 2015 14:53:34

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

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)

Офлайн

#4 Апрель 24, 2015 23:59:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

>>> 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)

Офлайн

#5 Апрель 26, 2015 21:46:02

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

Так у меня на компьютеры тоже все так же выходит, а на сайте когда проверяю ошибки:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Офлайн

#6 Апрель 27, 2015 06:10:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

Что-то неправильно, значит, вводишь там на сайте. not defined нигде не должно быть.



Офлайн

#7 Апрель 27, 2015 16:41:08

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

Ну так на сайте, я вводил код:

Офлайн

#8 Апрель 27, 2015 23:22:24

TroSer
От: Харьков
Зарегистрирован: 2013-11-13
Сообщения: 65
Репутация: +  3  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

SuperStar != SuperStr

Офлайн

#9 Апрель 27, 2015 23:42:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Не подскажите, как разработать метод в классе SuperStar?

Xryst
Ну так на сайте, я вводил код:
Ну, во-первых, SuperStar (суперзвезда), хотя должно быть SuperStr (суперстрока), а во-вторых, там какой-то return не только лишний, так ещё и неправильный, потому что возвращает true, хотя такой константы в языке нет.
Отсюда можешь копировать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version