2015-01-27 5 views
1

Я строю простой верификатор электронной почты. Мне нужно сравнить текущее письмо локальных частей со списком допустимых символов. Поэтому, по сути, я спрашиваю, как я могу проверить, соответствует ли текущее письмо мне в локальной части буквой в списке ENTIRE допустимых символов. Если это допустимый символ, локальная часть переходит к следующей букве в своей строке и просматривает список допустимых символов, чтобы убедиться, что это так, и так далее, пока не достигнет символа @, если не существует допустимого символа ,Как сравнить две строки с помощью цикла for?

Я довольно новичок в python, поэтому я не знаю, как работает вложенные петли.

for ch in local: 
    for ch in valChar: 
    if(ch ==ch) <----problem 

Это то, что я написал в настоящее время для петель. Является ли «ch» переменной или некоторым типом синтаксиса для представления char?

+0

использовать другую локальную переменную во внутреннем для цикл и проверить на это .. пример 'for x in valChar' – karthikr

ответ

0

Позвольте мне объяснить цикл для вас:

for eachitem in file: 
    do something 

eachitem является переменной один конкретное значение файла/dictionairy и т.д ..

-2

Вам необходимо подтвердить адрес электронной почты, я бы использовал регулярное выражение: \ b [A-Z0-9 ._% + -] + @ [A-Z0-9 .-] +. [AZ] {2,6} \ б

0

ч является переменным, вы можете заменить его любой действительный идентификатор:

for local_ch in local: 
    for valChar_ch in valChar: 
     if(local_ch == valChar_ch): <----No problem 
3

Вам не нужны вложенные циклы в этом случае, благодаря оператору in:

for c in local: 
    if c in valChar: 
     performvalidaction(c) 
    else: 
     denoteasinvalid(c) 

Какой идентификатор использовать (c,, или что-нибудь еще) довольно безразлично, я склонен использовать односимвольные идентификаторы для переменных цикла, но нет правила, говорящего, что вы должны.

Если вам нужно использовать два вложенных цикла, вы просто используете разные переменные цикла для двух циклов.

На самом деле вам не нужно даже один цикл здесь (вы могли бы вместо того, чтобы работать, например, с Питона set с, например) - намного меньше два - но я думаю, используя одну петлю в порядке, если это понятнее вы.

+0

Почему бы не использовать регулярное выражение? –

+0

@MalikBrahimi, RE - это еще одна альтернатива, не связанная с циклом (например, я упоминаю о 'set', что BTW - это понятие, более вероятно, знакомое - некоторую теорию множеств часто преподают в школе, регулярные выражения обычно возникают, т :-). Повторяю: у одного нет ** ** использовать цикл, но если найти его простейшим/ясным для цикла, это тоже нормально. –

+0

Я понимаю, что вы имеете в виду. Однако в некоторых случаях петли могут иметь свои ограничения. Regex обладает гораздо более широким спектром возможностей. –