2013-05-05 102 views
0

下面是代码:有人可以向我解释这段代码吗?

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每下一个迭代但是这里遍历整个长度,所以我无法得到它背后的逻辑。我请求任何人都可以逐行解释我在这段代码中实际发生的事情。谢谢!

+6

的'而TRUE'和'break'只是混淆。结果是相同的,如果他们被删除。 – unutbu 2013-05-05 13:06:43

+0

@unutbu谢谢! – user1938918 2013-05-05 13:22:44

回答

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)) 
+2

这相当于'count = 5 * len(“hello,world”)'...... – 2013-05-05 13:15:16

+0

@Ashwini Chaudhary感谢您的详细解释! – user1938918 2013-05-05 13:25:13

+0

@Thijs Van谢谢! – user1938918 2013-05-05 13:25:43

3

你对+=的直觉是正确的; +=运营商意味着原地添加和不可变价值类型,如int正好count = count + len(phrase)相同的东西。

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

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

此代码中没有任何内容是遍历整个phrase值的任何东西。只有它的长度(12)被查询,并加入到count,因此最终值是5次12等于60

+0

谢谢你的解释! – user1938918 2013-05-05 13:26:19

相关问题