2017-04-22 9 views
0

私は0から16のすべての数の累乗に2の結果を出力できるようにPythonでプログラムしようとしています。しかし、それは2の結果をパワー16に印刷することができ、その前には何も印刷できません。他の回答を印刷するにはどうしたらいいですか? 16Python:0から16の累乗で2の累乗


n = 2 
exponent = 16 

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

あなたが指数 'で始まる= 16'多分あなたは初期化する必要があります'指数部を' 0 'にする – user2314737

答えて

1

あなたexponent開始。 whileループは1回の反復のみを行います。

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

あなたは、あなたがそれを0から16に行きたいから、exponentの初期化を確認する必要がありますが、あなたは設定:あなたは、ループの各段階でnを再割り当てされている... これは動作しますそれは最初から16時です。

exponent = 0は、トリックを行う必要があります;)あなたがループ内で再割り当てnたびにあるので

また、注意してください。結果を印刷する代わりに、nに保存してください(または別の変数を使用してください)。

希望すると便利です。

2

2の累乗を持つ最良の方法は、1のビットシフトを使用しています。これは、その場合の累乗よりも速い方法です。なぜならwhileのすべての変数と望ましくない副作用を回避するリスト内包(無限ループを使用して値のリストを生成します。私はwhileループではなく、forループをお勧めします、またはより良いではないだろう、と述べた

など)とワンライナー:

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) 
関連する問題