有人可以向我解释一下这段代码吗?

时间:2013-05-05 13:02:53

标签: python

以下是代码:

count = 0
phrase = "hello, world"
for iteration in range(5):
    while True:
        count += len(phrase)
        break
    print("Iteration " + str(iteration) + "; count is: " + str(count))

我对count += len(phrase)

感到困惑

我觉得有点+= len(phrase) => count = count + len(phrase)

当计数+= 1时,可以理解的是,它在每次下一次迭代时递增1,但是在这里迭代整个长度,所以我无法得到它背后的逻辑。我请求是否有人可以逐行解释这个代码中实际发生的事情。谢谢!

2 个答案:

答案 0 :(得分:3)

你对+=的直觉是正确的; +=运算符表示就地添加,而不可变值类型(例如int count = count + len(phrase)完全相同。

外部for循环运行5次;所以count最终设置为phrase长度的5倍。

您可以完全删除while True:循环。它启动一个循环,只迭代一次; break结束在第一次迭代期间循环

此代码中没有任何内容迭代phrase值的整个长度。只查询它的长度(12)并将其添加到count,因此结束值是12乘以等于60的5倍。

答案 1 :(得分:3)

count = 0
phrase = "hello, world"
for iteration in range(5): #iterate 5 times
    while True:
        #count = count + len(phrase)
        count += len(phrase)  # add the length of phrase to current value of count.
        break                 # break out of while loop, while loop 
                              # runs only once for each iteration
    #print the value of current count
    print("Iteration " + str(iteration) + "; count is: " + str(count))

因此,简而言之,该计划将phrase的长度添加到count 5次。

<强>输出:

Iteration 0; count is: 12   # 0+12
Iteration 1; count is: 24   # 12+12
Iteration 2; count is: 36   # 24+12
Iteration 3; count is: 48   # 36+12
Iteration 4; count is: 60   # 48+12

上述程序大致相当于:

count = 0
phrase = "hello, world"
for iteration in range(5):
    count = count + len(phrase)
    print("Iteration " + str(iteration) + "; count is: " + str(count))