2016-09-27 9 views
0

"文字列の最初の文字でも最後の文字でもない" @ "記号 が含まれている必要があります。"@"記号が電子メールのどこにあるか検証します。電子メール自身の検証ではありません

私はクラス内でこの割り当てをしています。私の人生では、電子メールの前または終わりにブール値をfalseにする方法を理解できません。これはこれまで私が持っていたものです。

def validEmail1(myString): 
    for i in myString: 
     if i == "@": 
      return True 
    else: 
     return False 

答えて

2

あなたの文字列としてsで、あなたは行うことができます:

not (s.endswith('@') or s.startswith('@')) and s.count('@')==1 

テスト:

def valid(s): 
    return not (s.endswith('@') or s.startswith('@')) and s.count('@')==1 

cases=('@abc','[email protected]','[email protected]', '[email protected]@def') 

for case in cases: 
    print(case, valid(case)) 

プリント:

@abc False 
[email protected] False 
[email protected] True 
[email protected]@def False 

また、スライスを使用することができますが、あなたはまた、文字列はカウントが1であることを確認することによって開始または'@'で終わっていないことを(間接的に)ことを確認する必要があります。

def valid(s): 
    return '@' in s[1:-1] and s.count('@')==1 
+1

これは、実際の正解です。もう1つの答えは最初と最後を除くすべてをチェックします。また、[s [0]、s [-1]]ではない 'return" @ "を使用することもできます。 –

+0

なぜカウントが1でなければならないと思いますか?有効な電子メールアドレスは、複数の(引用された) '@'記号を持つことができます... –

関連する問題