Python 3.x Python:为什么这个Python控制台应用程序中会出现这个错误?
我正在用Python开发一个控制台应用程序,我想检查有效的电子邮件提供商,比如gmail.com。问题是,当我添加这一行时Python 3.x Python:为什么这个Python控制台应用程序中会出现这个错误?,python-3.x,console-application,Python 3.x,Console Application,我正在用Python开发一个控制台应用程序,我想检查有效的电子邮件提供商,比如gmail.com。问题是,当我添加这一行时 def print_valid(address): points = 0 count = 0 chars = [char for char in address] unallowed_symbols = ["#", "$", "%", "^", "&am
def print_valid(address):
points = 0
count = 0
chars = [char for char in address]
unallowed_symbols = ["#", "$", "%", "^", "&", "*", "/"]
email_providers = ["@outlook", "@gmail", "@hotmail", "@yahoo"]
# point one
if "@" in address:
points += 1
# point two
for letters in chars:
if "@" in letters:
count += 1
if count < 1 or count > 1:
points -= 1
else:
points += 1
# point three
for symbols in unallowed_symbols:
if symbols in address:
points -= 1
else:
break
points += 1
# point four
for provider in email_providers:
if provider in address:
points += 1
else: # this line
points -= 1 # this line
# check points
if points == 4:
return "Valid address"
else:
return "Invalid address"
email = str(input("Enter email: "))
print(print_valid(email))
def print_有效(地址):
分数=0
计数=0
chars=[地址中的字符对应字符]
不允许的_符号=[“#”、“$”、“%”、“^”、“&”、“*”、“/”]
电子邮件提供商=[“@outlook”、“@gmail”、“@hotmail”、“@yahoo”]
#第一点
如果地址中有“@”:
点数+=1
#第二点
以字符书写的信件:
如果以字母“@”表示:
计数+=1
如果计数<1或计数>1:
点数-=1
其他:
点数+=1
#第三点
对于不允许的_符号中的符号:
如果地址中有符号:
点数-=1
其他:
打破
点数+=1
#第四点
对于电子邮件提供商中的提供商:
如果提供方在地址中:
点数+=1
其他:#这一行
点-=1#此线
#检查点
如果点==4:
返回“有效地址”
其他:
返回“无效地址”
email=str(输入(“输入电子邮件:”)
打印(打印有效(电子邮件))
当我添加这两行并输入无效电子邮件时,例如@fake.com表示无效,但对于@gmail.com,它也输出无效。我不想你更正我的密码。我只是想知道为什么会发生这个错误
谢谢您在
第四点
中额外减少了点数
代码:
您正在检查每个提供者并递减
点
,即使您已经遇到了实际的提供者。这将降低“点数”值。一旦遇到提供者,就应该退出该循环。
def print_valid(address):
points = 0
count = 0
chars = [char for char in address]
unallowed_symbols = ["#", "$", "%", "^", "&", "*", "/"]
email_providers = ["@outlook", "@gmail", "@hotmail", "@yahoo"]
# point one
if "@" in address:
points += 1
# point two
for letters in chars:
if "@" in letters:
count += 1
if count < 1 or count > 1:
points -= 1
else:
points += 1
# point three
for symbols in unallowed_symbols:
if symbols in address:
points -= 1
else:
break
points += 1
# point four
for provider in email_providers:
if provider in address:
points += 1
break
# else: # this line
# points -= 1 # this line
# check points
if points == 4:
return "Valid address"
else:
return "Invalid address"
# email = str(input("Enter email: "))
email = "ex. @fake.com"
print(print_valid(email))
email = "@gmail.com"
print(print_valid(email))
Invalid address
Valid address