2016-11-21 69 views
0

什麼是相當於Python的閉環控制

for (I=2; I<n; I*=2) 

的蟒蛇。 我試圖用range()函數來做到這一點,我知道它如何與增量只工作。但在這裏我想在每次迭代中乘以它。我不想在循環中手動執行它

+0

這是一個無限循環。 '0 * 2'是'0'。 –

+0

顯示你的代碼,你得到的錯誤和你期待的結果。這將幫助我們幫助你。 – Inconnu

+0

這是java或C++的語法我想在python中做它 –

回答

2

雖然while很容易,while也很慢。嘗試:

In [3]: import math 

In [4]: n = 10 

In [5]: for i in (2**n for n in range(1, int(math.log2(n)) + 1)): 
    ...:  print(i) 
    ...: 
2 
4 
8 

In [6]: n = 40 

In [7]: for i in (2**n for n in range(1, int(math.log2(n)) + 1)): 
    ...:  print(i) 
    ...: 
2 
4 
8 
16 
32 

In [8]: n = 60 

In [9]: for i in (2**n for n in range(1, int(math.log2(n)) + 1)): 
    ...:  print(i) 
    ...: 
2 
4 
8 
16 
32 

In [10]: n = 100 

In [11]: for i in (2**n for n in range(1, int(math.log2(n)) + 1)): 
    ...:  print(i) 
    ...: 
2 
4 
8 
16 
32 
64 
+0

這個循環提供2,4,6,8,...而不是2,4,8,16,... – quantummind

+0

@quantummind你是對的。誤解。 –

+0

@quantummind檢查編輯。 –

1

簡單是Python中的規則。雖然是簡單的:

n = 20 
i = 2 

while (i<n): 
    print "the i variable is "+str(i) 
    i = i * 2 

我(本來,這已經被改變)除了使用這個簡單的例子,乘法會簡單地用「*」操作符像你一樣。

+0

問題說我* = 2,這是乘法,i = i + 2在你的答案中是加法。 – quantummind

+0

該評論指出。正在教授概念;我寫錢的真正代碼。 –

+0

好的,我想撤銷投票,但我不能這樣做,直到你編輯你的答案。考慮你可能會做客戶要求的,而不是寫你想要的,並告訴他可以修改它,以便按照他/她的意願工作。 :-) – quantummind