意外的python循环输出

时间:2012-06-07 19:59:47

标签: python loops

我正在编写一个脚本来从mangareader下载图像,我一直在尝试使用Python,因为这是我第一次学习的语言,而且我现在真的很喜欢。问题是我所做的循环输出不像我期望的那样工作。

soup = soup.findAll('option') # We select all the option tags
for l in soup: # And we start with a loop
    l = l.get_text()
    print l
    url = url + str(l)
    print url

我期待的输出是:

1
http://www.mangareader.net/witch-shop/1/1
2
http://www.mangareader.net/witch-shop/1/2
3
http://www.mangareader.net/witch-shop/1/3
4
http://www.mangareader.net/witch-shop/1/4
5
http://www.mangareader.net/witch-shop/1/5
[...]

它显示的是:

1
http://www.mangareader.net/witch-shop/1/1
2
http://www.mangareader.net/witch-shop/1/12
3
http://www.mangareader.net/witch-shop/1/123
4
http://www.mangareader.net/witch-shop/1/1234
5
http://www.mangareader.net/witch-shop/1/12345
[...]

我无法弄清楚原因。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

好吧,在每次迭代中你做

url = url + str(l)

将数字附加到url,并且永远不会重置。

要获得所需的输出,请尝试

for l in soup:
    l = l.get_text()
    print l
    print url + str(l)

这样您就不会更改url变量的内容。

答案 1 :(得分:2)

这是因为您在每次迭代时都将l附加到url而未初始化url

你应该这样做:

#....
url2 = url + str(l)
print url2
#....

答案 2 :(得分:1)

当您执行以下操作时

 url = url + str(l)

您实际上是附加到字符串,而不是向其添加1。