我有这种代码。问题是'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
答案 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)
。因为k
和len(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