Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2015 16:56:59

skripka696
Зарегистрирован: 2015-04-10
Сообщения: 42
Репутация: +  1  -
Профиль   Отправить e-mail  

validator

Подскажите как правильно написать класс валидации, ну к примеру, который будет проверять числ введенное с клавиатуры на то int это или нет
Помогите, не знаю с чего начать, как правильно это записать! Написала функции, а как теперь класс написать не знаю!

t=input('enter data: ')
def Int(t):
  
    if type(t)==int:
        raw_input('type - int')
Int(t)

Офлайн

#2 Апрель 22, 2015 17:21:50

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

validator

вам бы немного еще почитать литературы!

class valid_int:
    def __init__(self, n):
        self.n = n
    def valid(self):
        return type(self.n) == int
a = valid_int(10)
b = valid_int('hello')
c = valid_int(True)
d = valid_int(10.5)
print a.valid()
print b.valid()
print c.valid()
print d.valid()
или так
class valid_int:
    @staticmethod
    def valid(n):
        return type(n) == int
a = 10
b = 'hello'
c = True
d = 10.5
print valid_int.valid(a)
print valid_int.valid(b)
print valid_int.valid(c)
print valid_int.valid(d)



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Апрель 23, 2015 00:14:14

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

validator

>>> import re
>>> 
>>> class Validator:
...     
...     def is_int(self, s):
...         return re.search(r'^[-+]?\d+$', s) is not None
... 
>>> v = Validator()
>>> v.is_int('0')
True
>>> v.is_int('1')
True
>>> v.is_int('10')
True
>>> v.is_int('-1')
True
>>> v.is_int('0.5')
False
>>>



Отредактировано py.user.next (Апрель 23, 2015 00:17:52)

Офлайн

#4 Апрель 23, 2015 00:25:23

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

validator

py.user.next

t=input('enter data: ')
а так как используется raw_input то эт 2 пайтон



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Апрель 23, 2015 00:26:33)

Офлайн

#5 Апрель 23, 2015 03:37:14

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

validator

terabayt
а так как используется raw_input то эт 2 пайтон
Как бы обработки исключения при input() не увидел, значит ей не input() нужен, а просто raw_input().

skripka696
который будет проверять числ введенное с клавиатуры на то int это или нет

Видишь, как бы она даже про long не спрашивает, хотя там и long может быть. Следовательно, ей нужно просто ввести текст и убедиться, что это целое число. Иначе просто нет смысла делать валидатор.



Офлайн

#6 Апрель 23, 2015 07:36:36

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

validator

py.user.next
как бы она даже про long не спрашивает, хотя там и long может быть
может она прост не знает о лонг
py.user.next
Иначе просто нет смысла делать валидатор
ну хочет проверить int это или float

хотя чего гадать
что нам сама skripka696 скажет по этому поводу?



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Апрель 23, 2015 10:43:26

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

validator

terabayt
ну хочет проверить int это или float
Ну, она говорит, что что-то вводит, а вводить надо через raw_input(). Не зря же input() удалили из питона, этот raw_input() с eval() не оправдал себя.

Я же не просто так строковой валидатор привёл. То, что она использует input() для ввода, - неверно.



Отредактировано py.user.next (Апрель 23, 2015 10:46:20)

Офлайн

#8 Апрель 23, 2015 11:12:17

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

validator

py.user.next
То, что она использует input() для ввода, - неверно.
ну об этом и нужно было написать к коду

но если есть задача нужно ее решить
ваш первый код (ответ) был же нормальным, для использования input а не строки
почему вы изменили?



————————————————
-*- Simple is better than complex -*-

Офлайн

#9 Апрель 23, 2015 12:00:52

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

validator

terabayt
почему вы изменили?
А что я там писал? Уже не помню.

Я, по-моему, для третьего питона писал, а там неправильного input() нет. А потом вчитался в её задание и оказалось, что ей это не надо. Она просто хочет ввод проверять, а не что-то там устанавливать в плане внутренних типов.



Офлайн

#10 Апрель 23, 2015 15:33:20

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

validator

py.user.next
А что я там писал? Уже не помню.
если я не ошибась, то что-то наподобии
class Validator:
    def is_int(self, s):
        return type(s) == int
    def is_str(self, s):
        return type(s) == str
py.user.next
Я, по-моему, для третьего питона писал, а там неправильного input() нет
нет
я потому и начал спрашивать так как очень большая разница



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version