Python邮箱格式校验脚本输入无效邮箱未重新录入问题求助
问题根因
check函数未返回校验状态:当前无论邮箱是否符合格式,函数都返回空值,外层逻辑无法判断输入是否有效,自然无法触发重新录入逻辑- 循环条件使用错误:你把Python主程序入口的判断
__name__ == '__main__'当成了循环条件,只要脚本是直接运行的,这个条件永远成立,就算输对了邮箱也永远走不到输入密码的步骤 - 缺少循环跳出逻辑:没有根据校验结果控制是否继续循环输入邮箱
修复后可运行代码
import re # 优化正则:移除字符集中多余的|符号,原写法会把|当成允许的合法字符 regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b' def check(email): if re.fullmatch(regex, email): return True else: print("correct format is like amireza@gmail.com") return False if __name__ == '__main__': # 循环输入邮箱,直到格式合法才跳出 while True: username = input("请输入邮箱:") if check(username): break password = input("请输入密码:") # 后续可执行存入数据库等操作
修改说明
- 调整
check函数返回值:格式合法返回True,不合法返回False,外层可直接根据返回值判断输入有效性 - 修正程序结构:将
__name__ == '__main__'恢复为标准的主程序入口判断,避免无意义的无限循环 - 新增循环控制逻辑:只有校验通过才会跳出邮箱输入循环,否则自动重新要求输入
内容的提问来源于stack exchange,提问作者amirreza es
相关产品推荐
相关产品推荐

