自己写的Python答案,不知道错在哪儿希望能被告知问题在哪儿和答案

问题:输入一个邮箱,来判定该邮箱的格式是否正确。

类似A@B.C的结构,A,B,C都必须至少包含一个字母或者数字。

例子:n='i@g.com'

格式正确的话输出:('i@g.com' ,True)

例子:n='_i@g.com'

不正确的话输出:('_i@g.com' , False) 

 

这是我的答案:
n_1=n.find('@')
n_2=n.find('.')
a=n[0:n_1]
b=n[n_1:n_2]
c=n[n_2+1]
if len(a)>=1 and (a.isdigit or a.isalpha) and len(b)>=1 and (b.isdigit or b.isalpha) and len(c)>=1 and (c.isdigit or c.isalpha):
    print(n,", True")
else:
    print(n,", False")

不管输入的是啥格式都是True, 不知道错在哪儿里...
 

n = "1A@a124.com"

n_1=n.find('@')
n_2=n.find('.')
a=n[0:n_1]
b=n[n_1+1:n_2] # n_1是 @ 的位置,你要从 @ 的下一个位置开始切片,就要+1
c=n[n_2+1:] #获取切片要加 “:”
# a.isdigit() or a.isalpha() 这样是判断:a字符串中要么全部是数字,要么全部是字母
# 对于"1A@a124.com"这样字母和数字混合的应该是用 a.isalnum()
if a.isalnum() and b.isalnum() and c.isalnum():
    print(n,", True")
else:
    print(n,", False")

 

isdigit和isalpha后面要加括号的,还有你的a,b,c赋值有点问题,照我这样就能行了

n_1=n.find('@')
n_2=n.find('.')
a=n[0:n_1]
b=n[n_1+1:n_2]
c=n[n_2+1:]
print(a,b,c)
if len(a)>=1 and (a.isdigit() or a.isalpha()) and len(b)>=1 and (b.isdigit() or b.isalpha()) and len(c)>=1 and (c.isdigit() or c.isalpha()):
    print(n,", True")
else:
    print(n,", False")

 

可如果我输入的是 n='1v@g.com' 结果应该是True但显示的结果为False...

有基本的pyhton方法吗,正则还没学到...

n_1=n.find('@')

n_2=n.find('.')

a=n[0:n_1]

b=n[n_1+1:n_2]

c=n[n_2+1:]

if a.isalnum() and b.isalnum() and c.isalnum():

    print(n,", True")

else:

    print(n,", False")

2

推荐使用正则校验,需要导入 re 模块