@python_beginnersЭта группа больше не существует

Страница 1478 из 1885
sairusvirus
27.03.2017
14:42:07
Как преобразовать строку в список по два элемента

Johnnie
27.03.2017
14:47:30
как лучше во фласке при сабмите формы проверить, что одно поле заканчивается на определенную последовательность символов, если нет - выдавать ошибку. во вьюшке или в самое форме через валидатор с регэкспом?

Dmitriy
27.03.2017
14:48:20
Какой-нибудь clean_field метод

Google
Igor
27.03.2017
14:48:29
если нет - выдавать ошибку через raise, должен быть какой-то validation error в wtforms

в форме, в общем

Johnnie
27.03.2017
14:48:45
т.е. переопределять validate() у формы?

Igor
27.03.2017
14:48:57
+

Dmitriy
27.03.2017
14:49:03
Стоп

Igor
27.03.2017
14:49:06
не переопределять только, а скорее экстендить

super не забывай

а вообще да, стоп

Johnnie
27.03.2017
14:49:11
мне надо регить только тех, у кого ящик в определенном домене)

Dmitriy
27.03.2017
14:49:23
В wtforms же можно указать валидатор

Johnnie
27.03.2017
14:49:35
def my_length_check(form, field): if len(field.data) > 50: raise ValidationError('Field must be less than 50 characters')

Igor
27.03.2017
14:49:37
там же валидаторы есть прям в поле, да

Johnnie
27.03.2017
14:49:39
во, кажись нашел

Google
Igor
27.03.2017
14:49:44
class LoginForm(FlaskForm): username = StringField('Username', validators=[Required()]) password = PasswordField('Password', validators=[Required()]) remember_me = BooleanField('Remember me', default=True)

Johnnie
27.03.2017
14:49:47
свои хуярить, без переопределения

http://wtforms.readthedocs.io/en/latest/validators.html#custom-validators

Igor
27.03.2017
14:50:01
в validators добавляешь регексповый свой да

Johnnie
27.03.2017
14:50:12
да там регэксп лишнее даж

Igor
27.03.2017
14:50:40
ну зато регексп готовый уже

а ends with не вижу

class wtforms.validators.Regexp(regex, flags=0, message=None)

и регэкспы в питончике шустрые на малых строках

Dmitriy
27.03.2017
14:51:24
Кастом же

Johnnie
27.03.2017
14:56:58
def validate_email(form, field): allowed_email_domains = ('@mail.ru',) message = f"Email address domain must be one of {', '.join(allowed_email_domains)}" if not any((field.endswith(domain) for domain in allowed_email_domains)): raise ValidationError(message)

Igor
27.03.2017
14:57:08
In [16]: %timeit 'lolkek hello world keklol'.endswith('lol') The slowest run took 6.90 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 202 ns per loop In [17]: %timeit bool(re.match(r'.*lol$', 'lolkek hello world keklol')) The slowest run took 5.84 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 1.25 µs per loop

я путаюсь немного, но по-моему регэкспы быстрее, не?

Johnnie
27.03.2017
14:58:11
нуууу, дааа... но стоит ли?))

Igor
27.03.2017
14:58:11
да, путаюсь

1.25 µs = 1250 nanosecond, говорит мне гугл

Johnnie
27.03.2017
14:59:10
микро мк 10−6 нано н 10−9

тогда збс

Denis
27.03.2017
15:07:09
ребят, привет

Нужна помощь в задаче, поиск самого большего 3хзначного палиндрома

Google
Denis
27.03.2017
15:07:34
код такой

res = reduce(lambda mem, next: mem*next,range(1000),100) return res == res[::-1]

ошибка такая return res == res[::-1] TypeError: 'int' object is not subscriptable

Igor
27.03.2017
15:12:42
у тебя вместо ошибки снова код скопипастился

Denis
27.03.2017
15:14:42
сорян

Johnnie
27.03.2017
15:15:15
нельзя инт резать

Denis
27.03.2017
15:15:54
а как можно проверить тогда число?

Johnnie
27.03.2017
15:16:43
проверить на что?

Denis
27.03.2017
15:18:27
является ли палиндромом

Igor
27.03.2017
15:18:31
стоп

Denis
27.03.2017
15:18:32
просто сделать срезами просто

Igor
27.03.2017
15:18:38
ты понимаешь как reduce работает?

Denis
27.03.2017
15:18:38
но нужно его преобразовывать

да

Igor
27.03.2017
15:18:42
чем он от map отличается?

ну а зачем тогда [::-1] к числу делать

ааа

Denis
27.03.2017
15:19:03
дурак есть дурак

Igor
27.03.2017
15:19:05
%)

ну [::-1] с какими типами объектов* можно делать?

Google
Denis
27.03.2017
15:19:28
строки

Igor
27.03.2017
15:19:30
тааак

как мы можем получить строку из числа?

Denis
27.03.2017
15:20:15
str(число)?

Igor
27.03.2017
15:20:56
попробуй!

b0g3r
27.03.2017
15:21:33
попробуй!
игорь за уточку :)

Igor
27.03.2017
15:22:03
игорь за уточку :)
за удочку. неправильно как-то за людей готовый код писать. тебя потом обвиняют, что над readlines() нельзя будет split() сделать.

Паша отлично вообще реагирует, дает удочку, а не рыбу, все такое

Admin
ERROR: S client not available

b0g3r
27.03.2017
15:22:17
пусть сами мучаются

Igor
27.03.2017
15:22:18
вот и он, кстати!

Denis
27.03.2017
15:22:25
попробуй!
на самом деле пробовал не работает =*(

Igor
27.03.2017
15:22:33
покажи

и обрати внимание, что 123 не равно "123"

а то мало ли.

Denis
27.03.2017
15:22:59
да

Igor
27.03.2017
15:23:26
надо дописать плагинчик к айпайтону

мне просто %timeit очень нравится

на SO пишут про timeit.repeat

Google
Denis
27.03.2017
15:23:55
покажи
return str(res) == str(res[::-1])

D
27.03.2017
15:24:13
уот

Igor
27.03.2017
15:24:14
:)

res это что такое? число или строка?

Denis
27.03.2017
15:24:22
а то мало ли.
почему-то все равно не ругается на тип данных

b0g3r
27.03.2017
15:24:34
ну почти

Denis
27.03.2017
15:24:43
по идее все перемноженные объекты с помощь reduce

res = reduce(lambda mem, next: mem*next,range(1000),100)

Igor
27.03.2017
15:24:54
это понятно

тип данных в итоге какой?

у результата

число или строка?

Denis
27.03.2017
15:25:10
строка

Igor
27.03.2017
15:25:26
если строка, тогда зачем ты щас делал str(res)?

и почему у тебя выше писало про int object isn't ...

в общем, res - это все-таки число, так?

а [::-1] над чем можно делать? над строками

Denis
27.03.2017
15:26:20
число да

Igor
27.03.2017
15:26:24
если res - это число, как сделать строку? str(res)

Denis
27.03.2017
15:26:26
но потом я его преборазовал

Igor
27.03.2017
15:26:32
нет

Страница 1478 из 1885

Эта группа больше не существует Эта группа больше не существует