兩種寫法:
第一種極簡:
print(sum(range(1,101)));
第二種常規寫法:
sum = 0
for i in range(1,101):
sum = sum + i
print(sum)
range()函數:
在C語言中,如果想要循環一個變量從1到100,要怎么寫呢?
for(i = 1,i<=100,i++)
你在C的代碼中,幾乎隨處可見上面的for循環。Python非常貼心,為我們設計了range函數,直接實現上面的功能。range函數是內置函數,無須特別導入,在任何地方都可以直接使用它。下面看一下具體用法:
1.提供一個數字參數,直接遍歷數字:
for i in range(10):
print(i)
## 結果:
0
1
2
3
4
5
6
7
8
9
從結果中,可以看出,只給一個數字類型參數,range會遍歷從0到參數減1的數字。要特別注意,range默認從0開始,到參數減1,也就是左閉右開的規則,這也是Python很多地方的規則,比如切片。
2.也可以指定遍歷的區間:
for i in range(1, 12):
print(i)
## 結果:
1
2
3
4
5
6
7
8
9
10
11
類似range(1, 12)的調用,會遍歷從1到11的數字,左閉右開.
3.還可以指定步長,就像切片一樣
for i in range(1, 12, 2):
print(i)
## 結果:
1
3
5
7
9
11
4.但更多的時候是結合range和len函數,遍歷一個序列的索引:
a = ['Google', 'Baidu', 'Huawei', 'Taobao', 'QQ']
for i in range(len(a)):
print(i, a[i])
range函數是Python使用頻率非常高的一個內置函數,它除了以上的使用特點外,還具有類似生成器的特性,這里先看個例子:
for i in range(1000000000000000000000000000000000):
print(i)
if i > 10:
break
range的參數是個多大的數我反正是眼花了,數不過來,但可以肯定的是,如果為了實現這個for循環,而事先在內存中准備好從1到10000000000000000000000000這么多個數,那么你的內存肯定溢出了,死機是正常的。不用懷疑,大多數情況下程序都是這么干的。不同的是,range在內部的實現機制上,並不會直接在內存中一次性生成如此多的數,而是需要一個就生成一個,然后返回一個,這樣不但節省了內存,也防止了上面例子中數字過大而無法表示的情況。
另外要注意,range下面的用法,不會有任何結果,也不會彈出異常:
>>> for i in range(1, 10, -2):
print(i)
# 什么都沒發生
>>> for i in range(10, 1):
print(i)
# 什么都沒發生
>>>
但是如果這么做,卻是可以的:
>>> for i in range(10,1,-1):print(i) 10 9 8 7 6 5 4 3 2
