【问题标题】:While loop won't stop虽然循环不会停止
【发布时间】:2013-07-02 03:30:12
【问题描述】:
while start_chapter<=end_chapter:
    os.makedirs("Chapter "+str(start_chapter))
    os.chdir("Chapter "+str(start_chapter))
    chap_url=link+"/c"+str(start_chapter)+"/"
    page=1
    try:
        max_page=get_max_page(chap_url)
    except:
        continue
    while(page<=max_page):
        page_url=chap_url+str(page)+".html"
        try:        
            pic_url=get_pic(page_url)
        except:
            break
        picture_shit=urllib2.urlopen(pic_url).read()
        with open(str(page)+"."+(pic_url.split(".")[len(pic_url.split("."))-1]), 'w') as f: f.write(picture_shit)
        print str(start_chapter)+"::"+str(page)
            page+=1
    os.chdir("../")
    start_chapter+=1

内部 while 循环不会停止,我测试了页面,发现它超过了 23 的 max_page,但它根本没有停止。有人可以帮忙吗?提前谢谢...

【问题讨论】:

  • page +=1 在 while 循环的末尾?
  • 好吧,考虑到循环体内的两个循环变量都没有改变,你会期待什么?
  • 对不起,我复制了错误的代码。实际上我有 page+=1.. 还是不行

标签: python loops type-conversion


【解决方案1】:

max_page 是字符串,而不是数字。

>>> 1 < '0'
True

【讨论】:

  • 对..该死的我没注意到...非常感谢伙计...我欠你一个:D
  • @HasanSaad 别忘了accept his answer :)
【解决方案2】:

这里有很多问题:

  • 您永远不会增加 page,因此它永远不会达到 max_page 的值(编辑:现在在您的示例中修复)
  • 按照上面的编辑,只有在文件成功打开时才会增加
  • with 块下方有一个意图错误
  • 正如 Ignacio 指出的那样,max_page 不是一个会引起问题的数字
  • 您拥有的try: continue: 块意味着如果分配 max_page 时出错,将不会再次分配它,从而导致比较问题

这应该可以解决您的大部分问题:

while start_chapter<=end_chapter:
    os.makedirs("Chapter "+str(start_chapter))
    os.chdir("Chapter "+str(start_chapter))
    chap_url=link+"/c"+str(start_chapter)+"/"
    page=1
    try:
        max_page=int(get_max_page(chap_url))
        while(page<=max_page):
            page_url=chap_url+str(page)+".html"
            try:        
                pic_url=get_pic(page_url)
                picture_shit=urllib2.urlopen(pic_url).read()
                with open(str(page)+"."+(pic_url.split(".")[len(pic_url.split("."))-1]), 'w') as f:
                    f.write(picture_shit)
                print str(start_chapter)+"::"+str(page)
            except:
                break
            page+=1
    except:
        continue
    os.chdir("../")
    start_chapter+=1

【讨论】:

  • 不用担心,它有效吗?如果是@Haidro 建议的那样,您应该选择一个答案,以便人们将来可以找到对您有用的方法。 StackOverflow 不仅用于回答您的问题,还用于回答下一个人的问题:P
  • 谢谢它的工作。老实说,你上面的那个人之前回答过,所以我不得不通过那个勾号选择他的答案..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2014-06-06
  • 2013-03-25
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多