我在 Python 中编写了一个代码,即使我使用了 break 语句并继续,它仍然会进入 Python 中的无限循环:
Posted
技术标签:
【中文标题】我在 Python 中编写了一个代码,即使我使用了 break 语句并继续,它仍然会进入 Python 中的无限循环:【英文标题】:I have written a code in Python where even if i am using a break statement and continue still its going into an infinite loop in Python: 【发布时间】:2017-07-06 06:13:55 【问题描述】:下面的代码正在运行,但是当我试图退出代码时,它会进入一个无限循环,即使我输入 1,它也不会跳出循环。我是 Python 初学者,谁能帮帮我?
这是我的代码,
import urllib2
import sys
urlToRead = ('https://www.google.com')
crawledWebLinks =
while urlToRead !='':
try:
urlToRead = raw_input('Please enter the Next weblink to crawl')
if urlToRead == '':
print ('Ok Existing the Loop')
break
shortName = raw_input('Please enter a short Name for the Url to Read ' + urlToRead)
webfile = urllib2.urlopen(urlToRead).read()
crawledWebLinks[shortname] = webfile
except:
print (sys.exc_info()[0])
stopOrproceed = raw_input('You want to Stop or Continue, Please type in 1 to stop or anything else to Continue')
if stopOrproceed == 1:
print ('Okies we are stopping')
break
else:
print ('lets continue')
continue
print (crawledWebLinks.keys())
【问题讨论】:
stopOrproceed
是一个字符串。它永远不会与整数 1 比较。您的 if 语句应该类似于 stopOrProceed == "1"
或 int(stopOrProceed) == 1
。
raw_input
返回一个字符串。你的输入是"1"
,而不是1
。
【参考方案1】:
以下几行是导致问题的行,
stopOrproceed = raw_input('You want to Stop or Continue, Please type in 1 to stop or anything else to Continue')
if stopOrproceed == 1:
print ('Okies we are stopping')
break
您会看到raw_input
获取输入并将其存储为字符串。所以在从用户那里获得价值之后。您的 stopOrproceed
变量将具有 "1"
当你检查stopOrproceed==1
--> "1"==1
。这在 Python 中绝对不相等。所以评估总是假的因此控件永远不会进入if
,因此你永远不会break
。
试着改成这个,
if stopOrproceed == "1":
print ('Okies we are stopping')
break
【讨论】:
最后一个建议(类型转换)是个坏主意,因为它很可能会导致不需要的 TypeError 是的,我知道也许我应该提一下……谢谢好友@Dimgold 非常感谢毗湿奴....它工作得很好我用它和 int 和 string 都试过了,它工作得很好。万分感谢。 :) 如果它确实有效。接受答案。点击下方的小tick :)以上是关于我在 Python 中编写了一个代码,即使我使用了 break 语句并继续,它仍然会进入 Python 中的无限循环:的主要内容,如果未能解决你的问题,请参考以下文章
我在 Python 中编写了一个代码来从 5 个元素的数组中找到 4 个元素的最大值和最小值
node.js 可以编写一个方法,以便可以两种方式调用它 - 即使用回调或异步/等待?