for-while-for循环

时间:2014-05-08 14:29:20

标签: python for-loop while-loop

我有这种代码。问题是'kilpailija'没有改变另一个循环。在第三个循环中,'kilpailija'始终是列表numerot中的第一个变量。我怎么能让它改变到那个循环呢?

k = 0
for kilpailija in numerot:
    while k < len(tulokset):

        for kilpailijanyt in tulokset[k]:

            if kilpailija == kilpailijanyt.hae_numero():
                tulos.append(kilpailijanyt.hae_tulos())

            if kilpailija != kilpailijanyt.hae_numero():
                tulos.append("-")                        

        k += 1

2 个答案:

答案 0 :(得分:1)

为什么要使用while循环呢?除了迭代之外,您没有使用k

for kilpailija in numerot:
    # I was going to use tulos for t here, but you
    # already have a variable named tulos.
    for t in tulokset:
        for kilpailijanyt in t:
            if kilpailija == kilpailijanyt.hae_numero():
                tulos.append(kilpailijanyt.hae_tulos())
            if kilpailija != kilpailijanyt.hae_numero():
                tulos.append("-")

答案 1 :(得分:0)

你永远不会在内循环中重置k

for kilpailija in numerot的第一次迭代运行while循环直到k < len(tulokset)。因为klen(tulokset)都没有为下一次迭代而改变,所以该测试总是从那里开始是假的。

你的外部循环就好了,它是你的while语句,然后永远不会运行内部循环。将k重置回最外层循环内的0,或使用其他条件:

for kilpailija in numerot:
    k = 0
    while k < len(tulokset):
        for kilpailijanyt in tulokset[k]:

            if kilpailija == kilpailijanyt.hae_numero():
                tulos.append(kilpailijanyt.hae_tulos())

            if kilpailija != kilpailijanyt.hae_numero():
                tulos.append("-")                        

        k += 1