2014-12-19 3 views
2

у меня есть этот код:только последней итерации время цикла сохраняет

symbolslist = ["100","200","300","400","500","600","700","800","900","1000","1500","2000","3000","4000","5000","7000","10000"] 

i=0 
while i<len(symbolslist): 
    htmltext = urllib.urlopen("http://www.fifacoinszone.com/default/quick/getpricedetail? platform_id=7&coins="+symbolslist[i] +"&cur=GBP") 
    data = json.load(htmltext) 
    pricelist = data["single_price_just"] 
    print pricelist, 
    i+=1 

Это выходы:

4.69 9.32 13.91 18.46 22.96 27.41 31.82 36.18 40.50 44.78 66.83 88.66 132.32 175.55 218.34 304.15 345.86 430.17 3.94 7.83 11.69 15.51 19.29 23.03 26.74 30.40 34.03 37.62 56.15 74.50 111.19 147.52 183.48 255.58 363.30 

, который хорошо, но когда я пытаюсь затем измельчить этот код на меньшие переменные это Безразлично» Позвольте мне. Например, прейскурант [0:20] просто выведет последнюю итерацию цикла while. Извините, я новичок в Python.

+6

исправьте углубление – MattDMo

ответ

1

Ваша переменная pricelist перезаписывается на каждой итерации цикла. Вы должны сохранить свой результат в структуре данных некоторого вида, например, listlist будет работать с [0:20] ломтика нотации вы хотите использовать):

symbolslist = ["100","200","300","400","500","600","700","800","900","1000","1500","2000","3000","4000","5000","7000","10000"] 
pricelist = [] #empty list 

i=0 
while i<len(symbolslist): 
    htmltext = urllib.urlopen("http://www.fifacoinszone.com/default/quick/getpricedetail?platform_id=7&coins="+symbolslist[i] +"&cur=GBP") 
    data = json.load(htmltext) 
    pricelist.append(data["single_price_just"]) #appends your result to end of the list 
    print pricelist[i] #prints the most recently added member of pricelist 
    i+=1 

Теперь вы можете сделать:

pricelist[0:20] #returns members 0 to 19 of pricelist 

Как и вы.

Я также предлагаю использовать цикл for вместо того, чтобы вручную увеличивать счетчик в цикле while.

Python 2:

for i in xrange(len(symbolslist)): 

Python 3:

for i in range(len(symbolslist)): 
#xrange will also work in Python 3, but it's just there to 
#provide backward compatibility. 

Если вы делаете это таким образом, вы можете опустить i+=1 строку в конце.

Смежные вопросы