验证“@”符号在电子邮件中的位置。不验证电子邮件本身

Validating where the "@" symbol is in an email. Not validation of the email itself

"它必须包含一个"@"符号 这既不是字符串中的第一个字符也不是最后一个字符。"

所以我在我的 class 中有这个任务,但我终其一生都想不出如何使布尔值 false 因为它位于电子邮件的开头或结尾。这是我目前所拥有的。

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

使用 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','abc@','abc@def', 'abc@@def')

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

打印:

@abc False
abc@ False
abc@def True
abc@@def False

您也可以使用切片,但您还需要确保(间接地)字符串不以 '@' 开头或结尾,方法是确保计数为 1:

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