2017-04-22 40 views
0

一切權力,我想在Python編程,這樣我可以打印2的結果,每一個號碼的功率從0到16,我有以下這麼遠代碼,但它只能將2的結果打印到電源16上,而沒有任何打印結果。我如何打印其他答案?的Python:2從0力16


n = 2 
exponent = 16 

while exponent < 16+1: 
    n = n ** exponent 
    exponent = exponent + 1 
    print (n) 
+0

你開始用'指數= 16'也許你應該初始化'exponent'到'0' – user2314737

回答

1

exponent開始在16; while循環只會執行一次迭代。和你在循環的每一步都重新分配n ... 這會工作:

for exp in range(17): 
    print(2**exp) 
0

您應該檢查的exponent初始化,因爲你希望它去從0到16,但你設定它從16開始。

exponent = 0應該做的伎倆;)

此外,要小心,因爲你重新分配在每次循環n。嘗試只打印結果,而不是將其存儲在n(或使用其他變量)。

希望這會有所幫助!

2

與2的冪次最好的方法是使用比特移位上1,這是比在這種情況下,求冪的方式快。

這就是說,我不會推薦一個while循環,而是一個for循環,甚至更好:生成您使用列表理解(這避免了所有的變量和不希望的副作用,因爲while無限循環值列表等)和一個班輪:

print([1<<exponent for exponent in range(17)]) 

結果:

[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536] 
1

在代碼中進行以下更改

  1. exponent應最初設定爲0
  2. 結果應被存儲在迴路中的獨立變量,而不是在n

下面是正確的代碼版本:

n = 2 
exponent = 0 

while exponent < 16+1: 
    res = n ** exponent 
    exponent = exponent + 1 
    print (res)