Python基礎(三) 迴圈

2021-08-21 00:05:58 字數 4850 閱讀 5051

程式一般是順序執行,if else也是順序執行的;而迴圈(cycle)是控制程式執行流程的;

迴圈是程式的主要過程之一,對於列表的訪問,數列的計算都有很好的用途。在迭代過程中很有用,還有就是等比,等差數列和一些不是很容易求的數列都可以通過迴圈來進行求解。

python迴圈只有兩種while , for

# while 迴圈

count = 0

while

count

< 10:

print "the count is ", count

count += 1

print '迴圈結束'

while....else滿足執行裡面的,不滿足執行else語句塊

for迴圈在迭代讀取方面很好用:

for

item

in iterable:

do something

例子:for迴圈只要兩句,while迴圈卻要四句

# 遍歷字串

a = 'python'

print a[0:2]

# 使用while遍歷a

i = 0

while i < len(a):

print a[i]

i += 1

#使用range()判斷是不是在範圍

k = 0

while k in range(len(a)):

print a[k]

k += 1

# 使用for迴圈遍歷a

for i in

a: print i

#使用下表讀取:

for i in range(len(a)):

print a[i]

字典是無序的,所以for讀取時候就不能通過下標進行讀取,而是通過name值讀取對應的value

#字典先找到keys()值,然後再通過key去找value

city =

for name in city.keys():

for c in city[name]:

print name, c

enumerate()函式,自動生成下表

# for 下標 ,值 in enumerate()

letter = ['a', 'b', 'c', 'd', 'e']

forindex, value in enumerate(letter):

print value, 'is', index

輸出:a is

0b is

1c is

2d is

3e is

4

同時操作兩個列表zip()函式:裡面引數是可迭代的物件:

如果各個迭代器的元素個數不一致,則按照最小的返回

list1 = ['hello', 'world', 'yes']

list2 = [1, 2, 3]

print zip(list1, list2)

print zip(list2, list1)

輸出:[('hello', 1), ('world', 2), ('yes', 3)]

[(1, 'hello'), (2, 'world'), (3, 'yes')]

不一致情況:

list1中去掉乙個元素

list1 = ['hello', 'world']

list2 = [1, 2, 3]

print zip(list1, list2)

print zip(list2, list1)

輸出:[('hello', 1), ('world', 2)]

[(1, 'hello'), (2, 'world')]

在字典中的情況:

list1 = (1, 2, 3)

dict1 =

# .keys() 獲取字典中所有的鍵值 .values()獲取字典中所有的值

print dict1.keys()

print dict1.values()

print zip(list1, dict1)

list2 = [1, 2]

zip()反向操作,把組合的數在反轉成原來的列表形式:

# 反向操作 zip(****)

num1 = [2, 4, 6, 8]

num2 = [1, 3, 5, 7]

result = zip(num1, num2)

print result

print result

print zip(* result)

#輸出結果:

[(2, 1), (4, 3), (6, 5), (8, 7)]

[(2, 1), (4, 3), (6, 5), (8, 7), (10, 19)]

[(2, 4, 6, 8, 10), (1, 3, 5, 7, 19)]

for  a in range(4):

print

'------------'

for b in range(3):

print b,

print

''

速度比for迴圈更高效推導式**少,執行速度快

# 把大寫英文變成小寫

print [x.lower() for x in list('abcdef')]

print [x.upper() for x in

'adbcef']

# 輸出:

['a', 'b', 'c', 'd', 'e', 'f']

['a', 'd', 'b', 'c', 'e', 'f']

# 字典的推導式

print

print

輸出:

字典的推導式:因為鍵值對存在,所以有所不同

e =

都是只對當前一層迴圈起作用;

示例:

#正常不帶break和pass的語句:

for i in range(4):

print i

for j in range(5):

# if j == 2:# break #continue

print j,

print

#輸出:00

1234

1012

3420

1234

3012

34

continue 跳過這一次迴圈:

# continue 跳過本次迴圈

for i in range(4):

print i

for j in range(5):

if j == 2:

continue

print j,

print

輸出:0

#第一層迴圈輸出01

34#第二層迴圈輸出 ,其中第二層迴圈的j==2時的布輸出了10

1342

0134

3013

4

break 跳出整個迴圈;

# continue 跳過本次迴圈

for i in range(4):

print i

for j in range(5):

if j == 2:

break

#break

print j,

print

#輸出:00

1101

2013

01

pass 是空語句保持完整性:

例子:

for i in range(10):

pass

# 保持**的完整性

for … else: else是在for迴圈正常執行完(不是通過break語句而中斷的)會執行的語句:

# 13、使用while輸出1-100內的質數 ,類似於 2,3,5,7,11,13....

x = 1

while x < 100:

tmp = x // 2

while tmp > 1:

if x % tmp == 0:

break

else:

tmp -= 1

else: # 這個else是跟while關聯的,這樣就當while都迴圈完成了以後就會執行else,用這個可以巧妙的進行列印質數,當所有

print x,

x += 1

i = 0

while

8*(2**i) < 8848130:

i += 1

else:

print i

range()

函式前開後閉;例子:

print range(10)

print range(0,10,1)

print range(10,-1,-5)

print range(10,2) # 預設步長是加一,這個裡面沒有辦法所以輸出為空

print range(-3,-1)

輸出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[10, 5, 0]

[-3, -2]

Python基礎 迴圈

要計算1 2 3,我們可以直接寫表示式 1 2 3 6要計算1 2 3 10,勉強也能寫出來。但是,要計算1 2 3 10000,直接寫表示式就不可能了。為了讓計算機能計算成千上萬次的重複運算,我們就需要迴圈語句。python的迴圈有兩種,一種是for.in迴圈,依次把list或tuple中的每個元...

python基礎 迴圈

for迴圈 a 11,22,33,44 for i in a print i 結果 11 2233 44while迴圈 i 0 while i 3 i 3為迴圈條件,當條件為真時,執行後面的迴圈體 條件為假時不執行 print i i 1結果 0 12break和continue i 0 while...

Python基礎 迴圈

目錄迴圈 練習break continue 小結 要計算1 2 3,我們可以直接寫表示式 1 2 3 6要計算1 2 3 10,勉強也能寫出來。但是,要計算1 2 3 10000,直接寫表示式就不可能了。為了讓計算機能計算成千上萬次的重複運算,我們就需要迴圈語句。python的迴圈有兩種,一種是fo...