对于循环不按预期工作

时间:2016-07-08 15:14:28

标签: python

我正在上课,我现在遇到了一个for循环问题。

def update():
update=[]
update1=[]
with open('Stock2.txt','r') as stockFile:
    for eachLine in stockFile:
        eachLine=eachLine.strip().split()
        update.append(eachLine)
    update.remove(update[0])
stockFile.close()
with open('Stock2.txt','r') as stockFile:
    for eachLine in stockFile:
        eachLine=eachLine.strip().split(' ')
        update1.append(eachLine)
    update1.remove(update1[0])
for eachList in update1:
    loopCon=-1
    for eachItem in eachList:
        loopCon+=1
        if eachItem=='':
            eachList[loopCon]=' '

count=-1
for eachList in update1:
    for eachItem in eachList:
        count+=1
        if eachItem != ' ':
            print(count)

我一直在处理的最后一个for循环是循环ok但是当我每次在for循环中为每个List中的eachItem循环时添加一个来计数:'它随机出现如下数字:

0 10 14 21 28 35 36 46 62 69 76 83 84 94 111 这是我正在使用的股票文件 - Stock2.txt

GTIN-8            Product-Name        Price(£)     CSL     ROL     TSL
95820194          Windows-10-64bit    119.99       0       1       3
68196167          Cheese                1.00       0       3       8
62017014          Bread                 0.93       0       3       9
86179616          10tb-memory-stick   916.96       0       0       4
19610577          Freddo                0.15       0       2       9

等等。 有没有什么我做错了,因为我可能无法轻易检测到它,因为我只做了近1年的python。 谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

您在打印的count之外增加if。试试这个:

for eachList in update1:
    for eachItem in eachList:
        if eachItem != ' ':
            count+=1
            print(count)

答案 1 :(得分:0)

如果我在上一个print update1循环之前放置for语句,即在语句for eachList in update1:之前,我得到以下输出:

[['95820194', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'Windows-10-64bit', ' ', ' ', ' ', '119.99', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', '1', ' ', ' ', ' ', ' ', ' ', ' ', '3'], ['68196167', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'Cheese', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1.00', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', '3', ' ', ' ', ' ', ' ', ' ', ' ', '8'], ['62017014', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'Bread', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0.93', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', '3', ' ', ' ', ' ', ' ', ' ', ' ', '9'], ['86179616', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '10tb-memory-stick', ' ', ' ', '916.96', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', '4'], ['19610577', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'Freddo', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0.15', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', '2', ' ', ' ', ' ', ' ', ' ', ' ', '9']]

因此,似乎输出根本不是随机的。您正在做的是遍历列表update1中的每个列表,并且每次获得count中的元素时,您都会递增eachItem

但是,仅在count时才打印eachItem != ' '。因此,您可以看到它在0时打印eachItem == '95820194',然后在10时打印eachItem == 'Windows-10-64bit',依此类推。虽然即使在eachItem == ' '时也会增加,但不会打印。