Darkbule37 2021-02-01 15:10 采纳率: 100%
浏览 34
已采纳

自己写的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, 不知道错在哪儿里...
 

  • 写回答

6条回答 默认 最新

  • 天际的海浪 2021-02-01 17:47
    关注
    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")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波