我正在尝试使脚本在“ for循环”中每第三次迭代后就进入睡眠状态。这是我到目前为止的内容:
#List of words
Word_list = ['apple','orange','grape','mango','berries','banana','sugar']
#Loop through the list of words with the index and value of the list
for i,word in enumerate(Word_list):
#Store value of i in v
v = i
#If the value of the index, same as the 3rd loop iteration is 3, do this
if v == 3*(i+1):
sleep(3)
print(i+1,word,'done')
#Else do this
else:
print('exception')
输出不是我期望的。
预期输出为:
exception
exception
3,grape,done
exception
exception
6,banana,done
exception
答案 0 :(得分:1)
这应该做到。执行v = i
然后检查v == 3 * (i + 1)
总是为False,因为您正在检查i==3*(i+1)
,这对i=-1/2
import time
Word_list = ['apple','orange','grape','mango','berries','banana','sugar']
#Loop through the list of words with the index and value of the list
for i,word in enumerate(Word_list, 1):
#modulus function checks for divisibility by 3
if (i %3 == 0):
time.sleep(1)
print(i,word,'done')
#Else do this
else:
print('exception')
答案 1 :(得分:0)
您对if
语句的条件没有达到您想要的目的。 v
永远不会等于3*(i+1)
,因为您在循环中更早地设置了i=v
。您想要做的是v
乘以3的模数,该模数等于0,这样您就知道遍历列表已经三遍了。这就是代码的样子
import time
#List of words
Word_list = ['apple','orange','grape','mango','berries','banana','sugar']
#Loop through the list of words with the index and value of the list
for i,word in enumerate(Word_list):
#Store value of i in v
v = i
#If the value of the index, same as the 3rd loop iteration is 3, do this
if (v + 1) %3 == 0:
time.sleep(3)
print(i+1,word,'done')
#Else do this
else:
print('exception')
给出以下输出:
exception
exception
3 grape done
exception
exception
6 banana done
exception
答案 2 :(得分:0)
这是一个变体:
from time import sleep
Word_list = ['apple', 'orange', 'grape', 'mango', 'berries', 'banana', 'sugar']
# Loop through the list of words with the index and value of the list
for i, word in enumerate(Word_list, start=1):
if i % 3 == 0:
sleep(3)
print(i, word, 'done')
else:
print('exception')
诀窍是从1
开始枚举,并检查i%3
是否为零。