Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 24, 2015 00:18:13

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

validator

terabayt
если я не ошибась, то что-то наподобии
Там, по-моему, не s, а v было. s я ставлю как мнемоническую форму string обычно, а v - как мнемоническу форму value.

Увидел у тебя статический метод и сделал, как должно быть - объект, у которого просто методы вызываются. А потом перечитал её задание и понял, что она просто хочет ввод проверять, что её не типы питона интересуют, а то, состоит ли ввод из одних цифр.



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

Офлайн

#2 Апрель 26, 2015 15:59:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

validator

skripka696
ну к примеру, который будет проверять числ введенное с клавиатуры на то int это или нет.
Желательно начать с дописывания предложения. Будет проверять и если введено не целое число то БУДЕТ СДЕЛАНО ТОТО И ТОТО иначе ИНОЕ БУДЕТ СДЕЛАНО.

А вообще питон способ такой:
try:
    i=int(input_string)
except:
   ......



Офлайн

#3 Апрель 26, 2015 22:12:59

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

validator

terabayt
py.user.next
У меня смысл был не в валидаторе а в парсере, вот какой код я сделала, но его еще переделывать надо. Мне сказали что парсер не правильно работает.

import argparse
class valid_float():
    def __init__(self, data):
        try:
            type(data)
            print "Введенное значенение соответствует типу float"
        except:
            print "Введенное значение НЕ соответствует типу float"
class valid_str():
    def __init__(self, data):
        try:
            str(data)
            print "Введенное значенение соответствует типу str"
        except:
            print "Введенное значение НЕ соответствует типу str"
class valid_int():
    def __init__(self, data):
        try:
            int(data)
            print "Введенное значенение соответствует типу int"
        except:
            print "Введенное значение НЕ соответствует типу int"
class valid_isoDate():
    def __init__(self,data):
       
        date = data.split('-')
        if (len(date[0]) == 4) and ((len(date[1]) == 2)) and (len(date[2]) == 2):
            print 'Введенные данные соответствуют IsoDate'
        else:
            print 'Введенные данные НЕ соответствуют IsoDate'
class valid_csv():
    def __init__(self,data):
    
        data = data.split(',')
        if (len(data)>1):
            print 'Введенные данные соответствуют Comma-Separated Values' 
        else:
            print 'Введенные данные НЕ соответствуют Comma-Separated Values'
class check_data(argparse.Action):
	def __init__(self, option_strings, dest, nargs=None, **kwargs):
		super(check_data, self).__init__(option_strings, dest, nargs, **kwargs)
	def __call__(self, parser, namespace, values, option_string=None):
		setattr(namespace, self.dest, values)
parser = argparse.ArgumentParser()
parser.add_argument('--d', action = check_data , dest='Data', nargs='+' , type = valid_csv)
args = parser.parse_args()


Спасибо вам за помощь!

Отредактировано skripka696 (Апрель 26, 2015 22:13:28)

Офлайн

#4 Апрель 26, 2015 22:17:43

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

validator

У меня просто изначальный ступор был, надо было с чего то начать!

Офлайн

#5 Апрель 27, 2015 06:44:05

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

validator

skripka696
class valid_float():
Все такие определения
во втором питоне пишутся так
class ValidFloat(object):
в третьем питоне пишутся так
class ValidFloat:

А маленькие буквы и подчёркивания - для названий функций и переменых.

skripka696
Мне сказали что парсер не правильно работает.
Ну, вот эти валидаторы, во-первых, должны быть в виде методов в одном классе Validator, а во-вторых, они у тебя неправильно проверяют.

Например, csv-валидатор считает, что строка не может быть из одного поля. А ещё он разделяет по запятой, хотя запятая может быть внутри поля проэкранирована кавычками.
Почитай про csv.

str-валидатор считает None строкой.
float-валидатор вообще не проверяет ничего.

И эти методы вообще не должны выводить ничего на экран, они должны возвращать только True/False, а выводить должен “выводильщик”, который по этим True/False узнаёт, что выводить.

skripka696
Мне сказали что парсер не правильно работает.
И парсер неправильно работает. Вообще неясно, зачем там действие создаётся, если по дефолту это всё можно собрать простенько.



Отредактировано py.user.next (Апрель 27, 2015 06:45:25)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version