如何检查输入文本是否包含指定后缀?Python邮箱验证代码问题
如何检查文本中是否包含特定子文本?
你的代码问题出在判断逻辑上:email in list是在判断输入的完整字符串是否完全等于列表中的某一项。而你输入的myname123@gmail.com是包含@gmail.com但并非完全匹配列表里的元素,所以会进入else分支。
要实现「检查文本是否包含特定子文本」的需求,可以用以下两种方式修改代码:
方法1:检查文本中是否存在任一特定子串
这种方式会验证输入文本的任意位置是否包含列表中的后缀,适合通用的包含检查场景:
import time valid_suffixes = ["@gmail.com", "@yahoo.com", "@outlook.com"] email = input("Email: ") time.sleep(1.5) if any(suffix in email for suffix in valid_suffixes): print(email) else: print("\nPlease enter a valid email!")
方法2:检查文本是否以特定子串结尾(更适合邮箱验证)
邮箱的后缀是固定在末尾的,用str.endswith()方法更严谨,可以避免比如gmail.com@invalid.com这类错误匹配的情况:
import time valid_suffixes = ["@gmail.com", "@yahoo.com", "@outlook.com"] email = input("Email: ") time.sleep(1.5) # endswith支持传入元组,批量检查多个后缀 if email.endswith(tuple(valid_suffixes)): print(email) else: print("\nPlease enter a valid email!")
内容的提问来源于stack exchange,提问作者XhanjiGamer
相关产品推荐
相关产品推荐

