python邮箱合法性判断

@符号之前是账户名,由若干英文字母、数字或者下划线组成。2~4段,其中每一段由英文字母、数字或者下划线组成,不允许包含其它字符,

题目中先给出一个整型数n(1 ≤ n ≤ 30),表示后面有n行字符串需要判断。随后的n行中,每行一个字符串,需要进行合法性判断。对于合法的字符串,应输出“Y”,否则输出“N”,结果中间不用空格。
import re

import re
 
n = int(input())
b=[]
 
for i in range(n):
    email = input().strip()
    if re.match(r'^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$', email):
        b.append("Y")
    else:
        b.append("N")
for j in b:
    print(j,end='')

这是写出来的代码,但是还有点错误,但不知道在哪,可以帮我指出来一些错误吗?

img

import re

n = int(input())

for i in range(n):
    email = input().strip()
    if re.match(r'^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$', email):
        print("Y")
    else:
        print("N")

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7727945
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:面试题:小明爬楼梯,一次只能上1级或者2级台阶,一共有n级台阶,一共有多少种方法上台阶?python实现
  • 除此之外, 这篇博客: Python 随堂练习中的 7. 输入多个同学的成绩,求总成绩,平均成绩,要求每次输入成绩后都要询问是否要继续输入,按y继续输入,按n结束输入 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • score=[]
    maxscore=int(input("满分分值分为:"))
    while True:
        try:
            x=float(input("请输入同学的成绩:"))
            assert 0<=x<=maxscore
            score.append(float(x))
        except:
            print("输入的分数有误!!!")
        while True:
            f=input("是否继续输入:Y/N/y/n:")
            if f not in ('Y','N','y','n'):
                print("输入的字符不对")
            else:
                break
        if f=='N' or f=='n':
             break
    s=float(len(score))
    print("总成绩为:",sum(score))
    print("平均成绩为:",sum(score)/s)
    print("最高分数为:",max(score))