2011-03-07 104 views
5
time=0 
gold=0 
level=1 
for time in range(100): 
    gold+=level 
    if gold>20*level: 
    level+=1 
    time+=10 

這個程序添加了黃金直到達到臨界量,然後它需要20s升級一個礦,所以它產生更多的黃金。我想跳過循環中的那20個(或20個步驟)?這在C++中起作用,我不知道如何在python中執行它。in python for loop ,,跳過數值

回答

17

不要在range(100)中這樣做。 for循環沒有提供像這樣跳過的方法;無論您在循環體中將其更改爲什麼,time都將設置爲列表中的下一個值。改用while循環,例如

time = 0 
while time < 100: 
    gold += level 
    if gold > 20 * level: 
     level +=1 
     time += 10 
    time += 1 
1

time將不斷被改寫每次循環迭代,所以time+=10不會收到預期的效果。您可以使用whiletime變量的顯式變異將循環轉換回C樣式循環,或者您可以看中並設置一個允許跳過任意值的迭代器。

1

將您的任務分配到最後一行的time不起作用。在循環的頂部,time立即分配給由range產生的下一個值。但爲什麼這是一個循環,你不能直接做計算嗎?