不能接受第二次输入

can not take input second time

我正在编写 python 代码来查找有效的 email/web 地址。现在代码已经完成了一半。我必须从用户那里获取一个整数,然后从用户那里获取一些字符串。我的程序会判断它们是否是有效的 mail/web 地址。 运行 程序运行 1 次后,它说“'str' 对象不可调用”。这是我的代码。代码很简单。它只有2个功能。一个用于二进制搜索,另一个用于检查有效的电子邮件地址。现在我找不到为什么我只能运行程序一次的问题。

def binary_search(item,my_list):
    found=False
    first=0
    last=len(my_list)-1
    while first <=last and found==False:
        midpoint=(first+last)//2
        if my_list[midpoint]==item:
            found=True
        else:
            if my_list[midpoint]<item:
                first=midpoint+1
            else:
                last=midpoint-1
    return found

def isValidEmail(email_list):
  number = ["0","1","2","3","4","5","6","7","8","9"]
  number.sort()
  #isValid = True
  if(email_list.count("@") != 1 ):
    return False
  
  email_list = email.split("@")
  first = email_list[0]
  last = email_list[1]
  if(binary_search(first[:1],number)):
    return False

  if(last.count(".") == 0):
    return False

  last = last.split(".")
  if(last[0]=="" or last[-1] == ""):
    return False
  
  return True

n = int(input())
input_list = []
email = 0
web = 0
for i in range(n):
  input_list.append(input())

for input in input_list:
  is_Valid_Email =  isValidEmail(input)
  if(is_Valid_Email == True):
    email = email + 1
    web = web + 1


print(f"Email,{email}")
print(f"Web,{web}")
  

原因是因为你在

行使用了input,这是一个内置函数的名称作为变量名
for input in input_list:

第二次执行该单元格时,当 Python 看到 input() 时,它不再指代内置 input,而是指 input 来自您的 input_list.

我还收到另一个错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-21-4d260c538c36> in <module>()
      1 for input in input_list:
----> 2   is_Valid_Email =  isValidEmail(input)
      3   if(is_Valid_Email == True):
      4     email = email + 1
      5     web = web + 1

<ipython-input-18-02905daac63f> in isValidEmail(email_list)
      6     return False
      7 
----> 8   email_list = email.split("@")
      9   first = email_list[0]
     10   last = email_list[1]

AttributeError: 'int' object has no attribute 'split'

那个错误是因为 isValidEmail 作为参数 email_list,但是在行 email_list = email.split("@") 上你拆分了你没有定义的 email 变量该函数,因此 Python 从您定义为 email = 0.

的外部范围获取 email 变量