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,但在这里它迭代整个长度,所以我无法理解它背后的逻辑。我请求是否有人可以逐行解释此代码中实际发生的情况。谢谢!

4

2 回答 2

3

你的直觉+=是正确的;运算符+=表示就地加法,对于不可变的值类型int例如count = count + len(phrase).

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

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

在这段代码中,没有任何地方在phrase值的整个长度上进行迭代。只有它的长度 (12) 被查询并添加到count,所以最终值是 5 乘以 12 等于 60。

于 2013-05-05T13:06:54.833 回答
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))

所以,简而言之,程序的长度增加了phrase5count倍。

输出:

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))
于 2013-05-05T13:07:17.120 回答