瘋狂python講義學習日誌03——流程控制

python提供了順序結構、分支結構和循環結構方便用戶進行流程控制。所謂順序結構是在按照正常的書寫格式書寫的一行行代碼,程序運行時會一行一行的執行這些代碼美其名曰順序結構。本章將對python的分支結構和循環結構進行詳細說明,爲了簡潔明瞭的說明python的分支結構和循環結構,將展示大量示例代碼。

1 分支結構

所謂分支結構是指if語句的使用。下面說明if語句的三種使用形式:
第一種形式:

if expression :
   statement...

第二種形式:

if expression :
   statement...
else :
   statement...

第三種形式:

if expression:
	statement...
elif expression:
	statement...
else :
	statement...
   對於if語句來說,除了False本身,各種代表“空”的None、空字符串、空元組、空列表和空字典都會被當成False處理。在使用if else分支語句時,一定要先處理包含範圍更小的情況。另外,可以使用pass語句使程序更加完整。
s = input("請輸入一個整數:")
s = int(s)
if s>5 :
  print("大於5")
elif s<5 :
  pass
elseprint("等於5")

2 斷言

斷言和if分支有點相似,它用於對一個bool表達式進行斷言,如果該表達式爲True,該程序可以繼續向下執行;否則該程序會引發AssertionError錯誤。

s_age = input("請輸入您的年齡:")
age = int (s_age)
assert 20< age <80
print ("您輸入的年齡在20到80之間")#如果輸入不在此範圍,報assersionError錯誤

3 循環結構

對於循環結構而言,包含如下4個部分:

  • 初始化語句(init_statements):一條或多條語句,用於完成一些初始化工作。初始化語句在循環開始之前執行。
  • 循環條件(test_expression):這是一個布爾表達式,該表達式決定是否執行循環體。
  • 循環體(body_statements):這個部分是循環的主體,如果循環條件允許,這個代碼將被重複執行。
  • 迭代語句(iteration_statements):用於控制循環條件中的變量,使得循環在合適的時候結束。

3.1 While循環

while循環的語法格式如下:

#while循環的語法格式:
[init_statements]
while test_expressin
	body_statements
	[iteration_statements]
#while循環應用實例
count_i=0
while count_i < 10 :
	print("count:",count_i)
	count_i+=1
print("循環結束")
#使用while循環遍歷元組和列表
a_tuple = ('fkit','crazyit','charlie')
i=0
#只有i小於len(a_tuple),繼續執行循環體
while i < len(a_tuple)
	print(a_tuple(i))
	i+=1

3.2 for-in 循環

for-in循環專門用於遍歷範圍、列表、元素和字典等可迭代對象包含的元素。for-in循環的語法格式如下:

for 變量 in 字符串|範圍|集合等
	statements

for-in循環可用於遍歷任何可迭代對象。可迭代對象是指該對象中包含一個_iter_方法,且該方法的返回值對象是next()方法。

s_max = input("請輸入您想計算的階乘:")
mx = int(s_max)
result = 1
#使用for-in遍歷範圍
for num in range(1,mx+1)
	result *=num
print(result)

3.2.1 使用for-in遍歷列表和元組

src_list = [12,45,33.4,13,'a',4,56,'crazyit',109.5]
my_sum=0
my_count=0
for ele in src_list
	if isinstance(ele,int) or isinstance(ele,float)
		print(ele)
		my_sum+=ele
		my_count+=1
print('總和:',my_sum)
print('平均數:',my_sum/my_count)

上面程序使用了python的isinstance()函數,該函數用於判斷某個變量是否爲指定類型的實例,其中前一個是要判斷的變量,後一個參數是類型。

a_list = [330,1.4,50,'fkit',3.5]
for i in range(0,len(a_list)):
	print("第%d個元素是%s"% (i,a_list[i]))

3.2.2 使用for-in循環字典

字典包含了如下幾個方法:

  • items():
  • keys():返回字典中所有key的列表
  • values():返回字典中所有value的列表
my_dict = {'語文':89,'數學':92,'英語':80}
for key,value in my dict.keys():
	print('key':key)
	print('value:',value)
print('------------------------------------')
#通過key()方法遍歷所有key
for key in my_dict.keys():
	print('key:',key)
	print('value:',my_dict[key])

3.3 for表達式

for表達式最終返回的是列表,因此for表達式也被稱爲列表推導式。

a_range = range(10)
#對a_range執行for表達式
a_list = [x*x for x in a_range]
#a_list集合包含10個元素
print(a_list)

如果將for表達式的方括號改爲圓括號,for表達式將不再生成列表,而是生成一個生成器(generator),該生成器同樣可以使用for循環迭代。

#使用for表達式創建生成器
c_generator = (x*x for x in a_range if x % 2 ==0)
#使用for循環迭代生成器
for i in c_generator:
	print(i,end='\t')
print()

可以使用for表達式進行嵌套:

d_list = [(x,y) for x in range(5) for y in range(4)]
print(d_list)

3.4 常用工具函數

使用zip()可以將兩個列表“壓縮”成一個zip對象,如此就可以使用循環並遍歷兩個列表。

a=['a','b','c']
b=[1,2,3]
c=[0.1,0.2]
[x for x in zip(a,b)]
[('a',1),('b',2),('c',3)]

[x for x in zip(a,c)]
[('a',1,0.1),('b',2,0.2)]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章