循环的最后一次迭代不保存

时间:2015-01-11 18:02:42

标签: python while-loop

我是python的新手。这是我不确定的代码的一部分:

i=0
while i< len(urls):
    htmlfile = urllib.urlopen(urls[i])
    htmltext = htmlfile.read()
    titles = re.findall(pattern,htmltext)
    i+=1

i=0
while i< len(titles):
    titles[i] = titles[i].translate(None, 'absdefghijklmnopqEUR rstuvwxyz;&£')
    i+=1

goldah = []

i=0
while i< len(titles):
    titles = map(float, titles)
    goldah = titles[i] * exchange
    goldah = "%.2f" % goldah
    print goldah
    i+=1

哪个输出

2.87
4.31
5.75
7.19
8.62
10.06
11.50
12.94
14.37
17.25
20.12
23.00
25.87
28.75
34.50
43.12
57.50
86.24
114.99
143.75
172.50
229.99
287.49
344.99
431.24

只保存一个或所有这些循环的最后一次迭代。因此,当我尝试稍后在代码中调用变量goldah时,如下所示:goldah[2]它不会在列表中给出第二个值,而是在最后一个值上给出第二个字符。对不起,我是python的新手。

1 个答案:

答案 0 :(得分:1)

您必须将最后一部分更改为

goldah = []

i=0
while i< len(titles):
    titles = map(float, titles)
    goldahtemp = titles[i] * exchange
    goldahtemp = "%.2f" % goldahtemp
    print goldahtemp
    goldah.append(goldahtemp)
    i+=1

这是因为您在每次迭代中更改goldah的值而不是实际存储它。您必须使用临时变量并将结果附加到列表中。