Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2014 01:25:17

xsay23
От: Казань
Зарегистрирован: 2014-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

Здравствуйте.
Задача такова:
Если переменная name содержит что нибудь кроме “abcdefghijklmnopqrstuvwxyz1234567890.-”, то
возникала бы исключение которое можно было бы перехватить и вывести надпись:
print('Ошибка')

try:
    name = input('Введите слово: ')
excert вот тут что писать?:
    print('Ошибка')

Как это можно написать?
может есть другой способ, без прехвата исключений?



python3

Отредактировано xsay23 (Сен. 13, 2014 01:39:44)

Офлайн

#2 Сен. 13, 2014 01:45:33

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

xsay23
Как это можно написать?
>>> if set(name).difference(s):
...     print('Ошибка')
...
Ошибка



Офлайн

#3 Сен. 13, 2014 09:16:02

xsay23
От: Казань
Зарегистрирован: 2014-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

Budulianin
большое спасибо

решил так:
az09 = [az09 for az09 in 'abcdefghijklmnopqrstuvwxyz1234567890.-']
name = input('Слово: ')
#
if set(name).difference(az09):
    print('Ошибка')



python3

Офлайн

#4 Сен. 13, 2014 09:21:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

1. А если я капсом напишу?
2. Глянь на модуль string, там есть замечательные вещи, типа string.ascii_letters



Офлайн

#5 Сен. 13, 2014 15:19:30

AZJIO
Зарегистрирован: 2014-08-27
Сообщения: 53
Репутация: +  -5  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

С помощью регулярных выражений удалось сделать. Как вариант.

#!/usr/bin/python3
#coding: utf-8
import re
pattern = re.compile(r'[^A-Za-z0-9.-]') # Любой символ крому указанных диапазонов
# pattern = re.compile(r'[^\d]') # Кроме цифр, проба
name = input('Введите слово: ') # глючит на 2.7.8
# name =  raw_input('Введите слово: ') # глючит на 3.4
# name = '34буквы34' # Тест без ввода
# name = '34litter34' # Тест без ввода
# print(name)
var = pattern.search(name)
# print(var) # Если не найдено то None, если найдено, то объект
if var:
	print('Ошибка')
if not var:
	print('Успех')



_________________________________________
Python_Examples.7z

Отредактировано AZJIO (Сен. 13, 2014 15:19:50)

Офлайн

#6 Сен. 13, 2014 15:47:16

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

AZJIO
raw_input

P.S. Может хватит уже говнокод выкладывать?

Отредактировано 4kpt_II (Сен. 13, 2014 15:51:15)

Офлайн

#7 Сен. 13, 2014 16:05:41

xsay23
От: Казань
Зарегистрирован: 2014-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

Мне важна компактность кода)

#
def mail():
    az09 = list('abcdefghijklmnopqrstuvwxyz1234567890.-@')
    mail = input('E-mail: ')#Ввод мыла
    mail = mail.lower()#перевод в прописные
    if set(mail).difference(az09):# :/ ТУТ думаю так лучше, или нет? 
        print('Ошибка, недопустимые символы')#
#
    len_mail = len(mail)# определение длины мыла в целом
    ch_dog = mail.find('@')# поиск @ и определение его индекса
    login = mail[:ch_dog]# определение логина
    len_login = len(login)# определение длины логин
#
    domen = mail[ch_dog+1:len_mail]# определение домена в целом
    len_domen = len(domen)# определение длины домена в целом
#
    t_domen = domen.find('.')# поиск точки в домене и присвоение его индекса
    domen_1 = domen[:t_domen]# определение основного домена
    domen_2 = domen[t_domen+1:len_domen]# домен за точкой
    len_domen_1 = len(domen_1)# определение длины основного домена
#
    domen_1_start = domen_1[0]# присвоение к переменной первого символа
    domen_1_finish = domen_1[len_domen_1-1]# присвоение к переменной последнего символа
    if domen_1_start == '-' or domen_1_finish == '-':
        print('Ошибка, домен начат/закончен дефисом')
#
    elif len_domen_1 < 3:#
        print('Ошибка, домен', domen_1 ,'менее 3-х символов')#
    elif len_domen_1 > 256:#
        print('Ошибка, домен более 256-ти символов')#
#
    elif len_login > 128:#
        print('Ошибка, слишком длинное имя')#
    elif len_login <= 0:#
        print('Ошибка, нет имени')#
#
    print()
mail()



python3

Отредактировано xsay23 (Сен. 13, 2014 16:06:04)

Офлайн

#8 Сен. 13, 2014 16:19:57

AZJIO
Зарегистрирован: 2014-08-27
Сообщения: 53
Репутация: +  -5  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

Можно ещё добавить, чтобы два раза @ не было, и точка в домене была одна.



_________________________________________
Python_Examples.7z

Офлайн

#9 Сен. 13, 2014 16:21:04

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

 
def mail():
    az09 = list('abcdefghijklmnopqrstuvwxyz1234567890.-@')
    mail = input('E-mail: ')#Ввод мыла
    mail = mail.lower()#перевод в прописные
    if set(mail).difference(az09):# :/ ТУТ думаю так лучше, или нет? 
        print('Ошибка, недопустимые символы')#

Что скажет на admin@домен.рф или vasya+pupkin@email.com ? А ведь это совершенно корректные почтовые адреса.

Офлайн

#10 Сен. 13, 2014 16:22:59

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

как проверить переменную "name" на запрещенные символы?

AZJIO
Можно ещё добавить, чтобы два раза @ не было, и точка в домене была одна.

Почему точка должна быть одна?! iam@from.company.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version