2017-02-17 23 views
0

したがって、これらの関数を繰り返し実行するネストされたwhileループを使用しています。数字は後続のループごとに大きくなるはずです。ネストされたWhileループで問題が発生する

私は正直に何がうんざりしているのか分かりません。誰かが私が非常に感謝している問題を指し示すことができるなら、それはおそらく小さなものです。

import math 

p = 1 
n = 10 

while n < 321: 
    p = 1 

    while p < 129: 
     T_serial = n^2 
     T_parallel = (T_serial/p) + math.log(p) 
     speed = T_serial/T_parallel 
     effic = speed/p 
     result = speed/effic 
     print(result) 
     p *= 2 

    n += 10 

答えて

1

以下は、何が起こっているかを示しています

import math 

p = 1.0 
n = 10.0 

print "n\tp\tresult" 

while n < 321.0: 
    p = 1 

    while p < 129.0: 
     #print "n", n, "p", p 
     T_serial = n**2.0 
     T_parallel = (T_serial/p) + math.log(p) 
     speed = T_serial/T_parallel 
     effic = speed/p 
     result = speed/effic 
     print "%s\t%s\t%s" % (n, p, result) 
     p *= 2.0 
    n += 10.0 

出力:efficresultのためのあなたの方程式で

n  p  result 
10.0 1  1.0 
10.0 2.0  2.0 
10.0 4.0  4.0 
10.0 8.0  8.0 
10.0 16.0 16.0 
10.0 32.0 32.0 
10.0 64.0 64.0 
10.0 128.0 128.0 
20.0 1  1.0 
20.0 2.0  2.0 
20.0 4.0  4.0 
20.0 8.0  8.0 
20.0 16.0 16.0 
20.0 32.0 32.0 
20.0 64.0 64.0 
20.0 128.0 128.0 
30.0 1  1.0 
30.0 2.0  2.0 
30.0 4.0  4.0 
30.0 8.0  8.0 
30.0 16.0 16.0 
30.0 32.0 32.0 
30.0 64.0 64.0 
30.0 128.0 128.0 
40.0 1  1.0 
[etc...] 

ルック。最後にあなたはちょうどでした

results = speed/effic = speed/(speed/p) = p 

それはあなたが期待したものではありません。毎回pを印刷するだけです。

+0

imは第2のループスルーを期待し、p <129は第1の方法のように10の代わりにn = 20を有すると仮定する。また、譲渡はスタックオーバフローに追加するだけの私の過ちだった。申し訳ありません。 –

+0

ああああ、ありがとう、ありがとう。 –

0

最初のwhileループにインデントエラーがあります。

import math 

p = 1 
n = 10 

while n < 321: 

    p = 1 

    while p < 129: 
     T_serial = n^2 
     T_parallel = (T_serial/p) + math.log(p) 
     speed = T_serial/T_parallel 
     effic = speed/p 
     result = speed/effic 
     print(result) 
     p *= 2 

    n += 10 
+0

申し訳ありませんが、誤ってstackoverflowに入れて私に応じて私はそれに応じて編集されます。 –

関連する問題