關于break放置順序的問題
為什么這樣寫
sum = 0
x = 1
n = 1
while True:
? ??
? ? sum = sum + x
? ? x = 2*x
? ? n +=1
? ? if n >20:
? ? ? ? break
print sum
和這樣寫
sum = 0
x = 1
n = 1
while True:
? ? if n >20:
? ? ? ? break
? ? sum = sum + x
? ? x = 2*x
? ? n +=1
? ??
print sum
得出的結果是一樣的,第二種不應該少執行一次嗎?
2017-01-21
只要你的n+=1 在sum+=x 之后你的退出判斷放在那執行的次數都是一樣的,除非第二種把n+=1 移動到sum+=x前面
2017-01-22
樓主覺得第二種寫法在最后一次被break了所以覺得它少執行了一次, 其實不然, 因為在整個過程中, 第一種寫法一共執行了20次, 而第二種寫法執行完同樣的20次后在執行第21次的時候n的值為21, 大于20被break了, 所以說它并沒有少執行一次, 反而是多執行了"半次"(比第一種寫法多執行了一次判斷), 所以結果是一樣的.