2015-10-29 27 views
1

在for內的IF出現問題。「如果」嵌套在「for」中只能輸入一次

print (frames_min) 
print (frames_max) 

for f in range(frames_min, frames_max): 
    if ((f >= 96) and (f < 144)): 
     f += 3 
    print("A",f) 

結果:

Output

爲什麼不100,103,106,109?

+0

因爲for'循環在Python的工作方式',每次迭代時,F被重新分配爲您的迭代 –

+4

'F'下一個條目在循環的每次迭代的開始復位。這就是'f在範圍(...)'中所做的。如果你想有條件地增加變量,你可以使用'while'循環代替。 – khelwood

+0

@khelwood表示,你可以使用while循環,或者你可以使用'iter()'和'next(iter)'logic –

回答

2

在Python for遍歷每個變量,而不是由索引:

print (frames_min) 
print (frames_max) 

for f in range(frames_min, frames_max): 
    if ((f >= 96) and (f < 144)): 
     f += 3 
    print("A",f) 

在這裏,你是由3增加f價值,但表示f被存儲在那裏,而不是索引的實際數目。如果這不是想要的,你可以使用while

print (frames_min) 
print (frames_max) 
i = frames_min 
while i < frames_max: 
    print(i) 
    i += 3 

或者您可以使用range命令'step' parameter讓它給每3號:

print (frames_min) 
print (frames_max) 

for f in range(frames_min, frames_max, 3): 
    print("A",f) 

會做我認爲什麼是你想要的結果。

0

您需要使用while循環而不是for循環。

frames_min=97 
frames_max=144 

print (frames_min) 
print (frames_max) 

f=97 
while f >=frames_min and f<= frames_max: 
    f = f + 3 
print("A",f)