Найти - Пользователи
Полная версия: validator
Начало » Центр помощи » validator
1 2
skripka696
Подскажите как правильно написать класс валидации, ну к примеру, который будет проверять числ введенное с клавиатуры на то int это или нет
Помогите, не знаю с чего начать, как правильно это записать! Написала функции, а как теперь класс написать не знаю!
t=input('enter data: ')
def Int(t):
  
    if type(t)==int:
        raw_input('type - int')
Int(t)
terabayt
вам бы немного еще почитать литературы!
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)
py.user.next
>>> 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
>>>
terabayt
py.user.next
t=input('enter data: ')
а так как используется raw_input то эт 2 пайтон
py.user.next
terabayt
а так как используется raw_input то эт 2 пайтон
Как бы обработки исключения при input() не увидел, значит ей не input() нужен, а просто raw_input().

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

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

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

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

но если есть задача нужно ее решить
ваш первый код (ответ) был же нормальным, для использования input а не строки
почему вы изменили?
py.user.next
terabayt
почему вы изменили?
А что я там писал? Уже не помню.

Я, по-моему, для третьего питона писал, а там неправильного input() нет. А потом вчитался в её задание и оказалось, что ей это не надо. Она просто хочет ввод проверять, а не что-то там устанавливать в плане внутренних типов.
terabayt
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() нет
нет
я потому и начал спрашивать так как очень большая разница
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