2017-02-17 2 views
0

Also verwende ich verschachtelte while-Schleifen, um zu versuchen und durch diese Funktionen zu iterieren, und ich sehe nicht warum auf der 2. und Schleifen durch die 2. Schleife, warum es das gleiche ausdruckt Nummern sollte es bei jeder folgenden Schleife größer sein.Probleme mit verschachtelten While Loops

Ich weiß ehrlich nicht, was genau ich vermasselt, es ist wahrscheinlich etwas klein, wenn jemand auf das Problem hinweisen kann, würde ich es sehr schätzen.

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 

Antwort

1

Im Folgenden sehen Sie, was los ist:

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 

Ausgang:

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...] 

Sehen Sie sich Ihre Gleichungen für effic und result. Am Ende haben Sie nur

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

Also kein Wunder, es ist nicht das, was Sie erwartet haben. Sie drucken einfach jedes Mal .

+0

ich erwarte die 2. lop durch während p <129 um n = 20 statt 10 zu haben, wie es auf dem ersten Weg ist. auch die Indenation war nur mein Fehler, es zum Stack-Überlauf hinzuzufügen. Das tut mir leid. –

+0

Oh wow, ok vielen Dank. –

0

In Ihrer ersten while-Schleife liegt ein Einrückungsfehler vor.

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

Sorry das war wegen mir falsch in stackoverflow setzen ich werde entsprechend bearbeiten. –

Verwandte Themen