首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的While循环有问题

问嵌套的While循环有问题
EN

Stack Overflow用户
提问于 2017-02-18 06:40:18
回答 2查看 50关注 0票数 0

所以我使用嵌套的while循环来尝试和迭代这些函数,我不明白为什么在第二个循环中,等循环通过第二个循环,为什么它一直打印出相同的数字,它应该在后续的循环中变大。

老实说,我不知道我到底搞砸了什么,如果有人能指出问题所在,我会非常感激的。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-18 06:48:59

下面向您展示了正在发生的情况:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
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...]

看看你的effic和result的方程式。最后你就这么做了

代码语言:javascript
复制
results = speed / effic = speed / (speed / p) = p

所以难怪它不是你所期望的。每次只需打印p即可。

票数 1
EN

Stack Overflow用户

发布于 2017-02-18 06:54:01

在你的第一个while循环中有一个缩进错误。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42308601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档