2.1 條件結構
if語句
if 條件表達式: #注意有冒號
代碼塊 #注意縮進
else: #與if對齊
代碼塊
elif語句
if 條件:
代碼塊
elif 條件:
代碼塊
...
elif 條件:
代碼塊
else:
代碼塊
條件嵌套
同等縮進爲同一條件結構
猜數字遊戲:
運行結果:
2.2range和xrange
產生一組有規律的數據
語法:
range(start,end,step = 1) #start:起始值; end:終值; step:步長,不能爲0,默認爲1
range(start,end)
range(end) #0開始,不包含終值
以上都是生成真實的列表
xrange() #生成器,用多少生成多少;語法和range一樣;Python3中沒有xrange,當Python3中的range功能與xrange一樣
顯示xrange列表內容用list(xrange(10))
2.3循環
while循環
while 條件: #注意有冒號
代碼塊 #注意縮進
for 循環
明確循環次數
語法
for 一個變量 in 可迭代的對象: #注意冒號
代碼塊
可迭代的對象也就是說其值是可遍歷的,在Python中可迭代的對象主要有string(字符串)、list(列表)、tuple(元組)、dictionary(字典)、file(文件)
for可以用列表解析和生成器表達式中:
列表解析
由一對中括號構成,先是一個表達式 ,然後for循環;最後還可以加一個條件
生成器表達式
用的是圓括號,和列表解析很像,但不創建列表而是返回生成器,和Python2中xrange()以及Python3中的range()函數一樣,一般在數據量比較大的時候使用
2.4 循環中的break,continue和else
break語句
跳出當前所在的循環結構
continue語句
停止當前循環,重新進入循環(也就是停止continue後面的語句)
在while循環中,用於判斷循環條件是否滿足(滿足則跳過continue後面的語句 ,重新進入循環)
在for循環中,用於判斷迭代是否已經結束
循環中的else
如果循環代碼從break處終止,跳出循環
正常結束循環,則執行else中的代碼,while也可以和else搭配(正常結束while,執行else中的代碼)
2.5自定義函數
自定義函數的創建,語法
def 函數名(參數): #參數可寫可不寫,一般寫函數時,代碼塊先寫docstring,也就是代碼的註釋
代碼塊
查看一個函數的docstring,可以:print 函數名.__doc__
默認參數
以賦值語句的形式提供
默認參數的值可以改變
不允許默認參數後面跟非默認參數,默認參數一般需要放置在參數列表的最後
關鍵字參數
直接寫上參數的名字賦值,一旦使用了關鍵字參數,後面的參數都必須使用關鍵字參數
關鍵字參數是讓調用者通過使用參數名區分參數
允許改變參數列表中的參數順序
傳遞函數
把函數名當作參數傳遞給另一個函數
lambda函數,匿名函數
lambda 參數列表: 表達式 #注意冒號,返回的是表達式結果
2.6遞歸
遞歸必須要有邊界條件,即停止遞歸的條件
遞歸的代碼更簡潔,更符合自然邏輯,更容易理解
遞歸執行效率不高,系統資源消耗比循環大,一般沒有循環特徵,但有遞歸特徵採用,比如漢諾塔
2.7變量作用域
全局變量
在程序代碼主體部分的變量
局部變量
在函數中的變量
如果全局變量和局部變量同名,遵循內層屏蔽外層
Python全局變量不能在函數內重新賦值
global語句
強調全局變量,使得全局變量可以在函數內重新賦值