不能第二次输入
Posted
技术标签:
【中文标题】不能第二次输入【英文标题】:can not take input second time 【发布时间】:2021-12-27 14:47:33 【问题描述】:我正在编写一个 python 代码来查找有效的电子邮件/网址。现在代码完成了一半。我必须从用户那里获取一个整数,然后从用户那里获取一些字符串。我的程序会判断它们是否是有效的邮件/网址。运行程序 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")
【问题讨论】:
【参考方案1】:原因是因为你在该行使用了input
,这是一个内置函数的名称,作为变量名:
for input in input_list:
第二次执行单元格时,当 Python 看到input()
时,它不再指代内置的input
,而是指来自input_list
的input
。
我还遇到另一个错误:
---------------------------------------------------------------------------
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
来自您定义为 email = 0
的外部范围的变量。
【讨论】:
哇。有效。花 2 小时谷歌搜索。你真是天才。已准备好向教师发送我无法提交作业的邮件。谢谢伙计以上是关于不能第二次输入的主要内容,如果未能解决你的问题,请参考以下文章