Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ==真与!=之间的区别是什么没有一个 def get_next_目标(第页): 开始链接=页面。查找(“”,开始链接) url=页面[开始链接+9:结束链接] 返回url,结束链接 def打印所有链接(第页): url=True 而url!=无: url,endpos=获取下一个目标(第页) 如果url为: 打印url#真 第页=第页[endpos:] 其他: 打破 页码=“” 打印所有链接(第页)_Python_Comparison - Fatal编程技术网

Python ==真与!=之间的区别是什么没有一个 def get_next_目标(第页): 开始链接=页面。查找(“”,开始链接) url=页面[开始链接+9:结束链接] 返回url,结束链接 def打印所有链接(第页): url=True 而url!=无: url,endpos=获取下一个目标(第页) 如果url为: 打印url#真 第页=第页[endpos:] 其他: 打破 页码=“” 打印所有链接(第页)

Python ==真与!=之间的区别是什么没有一个 def get_next_目标(第页): 开始链接=页面。查找(“”,开始链接) url=页面[开始链接+9:结束链接] 返回url,结束链接 def打印所有链接(第页): url=True 而url!=无: url,endpos=获取下一个目标(第页) 如果url为: 打印url#真 第页=第页[endpos:] 其他: 打破 页码=“” 打印所有链接(第页),python,comparison,Python,Comparison,我这里的问题是,当我打印结果时,它将打印四个url,这是预期的结果,但当我将while设置为while url==True:时,它将只打印一个url,那么原因是什么?不是无等于==True如果url==”怎么办http://stackoverflow.com“?然后它不等于True,因此while停止。但是它不等于无,所以如果你检查它,循环就会继续 def get_next_target(page): start_link = page.find('<a href="')

我这里的问题是,当我打印结果时,它将打印四个url,这是预期的结果,但当我将while设置为
while url==True:
时,它将只打印一个url,那么原因是什么?不是无等于==True

如果
url==”怎么办http://stackoverflow.com“
?然后它不等于
True
,因此while停止。但是它不等于无,所以如果你检查它,循环就会继续

def get_next_target(page):

    start_link = page.find('<a href="')

    if start_link == -1:
        return None, 0

    end_link = page.find('">', start_link)
    url = page[start_link + 9 : end_link]
    return url, end_link

def print_all_links(page):

  url = True
  while url != None:
    url, endpos = get_next_target(page)
    if url:
        print url   #True
        page = page[endpos : ]
    else: 
        break

page = '<div id="top_bin"><div id="top_content" class="width960"><div class="udacity float-left"><a href="http://udacity.com"><a href="http://udacity.com"><a href="http://udacity.com"><a href="http://udacity.com">'

print print_all_links(page)


然后,它将按预期工作
url
只对一次,在第一次迭代后,它是一个字符串,并且
“anystring”!=True
,但是
bool(“anystring”)
如果“anystring”不是空字符串,则为True。

请注意,首先返回此类哨兵并不被认为是很好的设计
get_next_target
应该返回一个目标,而不返回其他任何内容(暂时忽略查找下一个目标所需的状态)。如果出现错误,则引发异常。在这种情况下,缺少另一个目标并不是一个真正的错误,但正如我们将看到的,它确实标志着迭代的结束。已经有一个例外:
StopIteration

if bool(url) == True:
def get_next_目标(第页):
开始链接=页面。查找(“”,开始链接)
url=页面[开始链接+9:结束链接]
返回url,结束链接
def打印所有链接(第页):
尽管如此:
尝试:
url,endpos=获取下一个目标(第页)
打印url
第页=第页[endpos:]
除停止迭代外:
打破
不过,我们可以编写一个更好的迭代器,用于从给定页面返回链接,它不会公开解析页面所需的状态

def get_next_target(page):
    start_link = page.find('<a href="')

    if start_link == -1:
        raise StopIteration

    end_link = page.find('">', start_link)
    url = page[start_link + 9 : end_link]
    return url, end_link

def print_all_links(page):

    while True:
        try:
            url, endpos = get_next_target(page)
            print url
            page = page[endpos:]
        except StopIteration:
            break
def get_目标(第页):
尽管如此:
开始链接=页面。查找(“”,开始链接)
收益页[开始链接+9:结束链接]
def打印所有链接(第页):
对于get_目标(第页)中的url:
打印url

错误!=无
>>错误!=None
-->
True
您正在使用
get_next_target(page)
将url覆盖为字符串,该字符串不等于
True
也不是好代码?你应该通过身份测试
None
,很少需要通过相等来比较布尔值。
def get_next_target(page):
    start_link = page.find('<a href="')

    if start_link == -1:
        raise StopIteration

    end_link = page.find('">', start_link)
    url = page[start_link + 9 : end_link]
    return url, end_link

def print_all_links(page):

    while True:
        try:
            url, endpos = get_next_target(page)
            print url
            page = page[endpos:]
        except StopIteration:
            break
def get_targets(page):
    while True:
        start_link = page.find('<a href="')
        if start_link == -1:
            break
        end_link = page.find('">', start_link)
        yield page[start_link + 9:end_link]

def print_all_links(page):
    for url in get_targets(page):
        print url