學到這裡已經很不耐煩了,前面的資料結構什麼的看起來都挺好,但還是沒法用它們做什麼實際的事。
基本語句的更多用法
使用逗號輸出
>>> print 'age:',25age: 25
如果想要同時輸出文本和變數值,卻又不希望使用字串格式化的話,那這個特性就非常有用了:
>>> name = 'chongshi'>>> salutation = 'Mr'>>> greeting = 'Hello.'>>> print greeting,salutation,nameHello. Mr chongshi
模組匯入函數
從模組匯入函數的時候,可以使用
import somemodule
或者
form somemodule immport somefunction
或者
from somemodule import somefunction.anotherfunction.yetanotherfunction
或者
from somemodule import *
最後一個版本只有確定自己想要從給定的模組匯入所有功能進。
如果兩個模組都有open函數,可以像下面這樣使用函數:
module.open(...)
module.open(...)
當然還有別的選擇:可以在語句末尾增加一個as子句,在該子句後給出名字。
>>> import math as foobar #為整個模組提供別名>>> foobar.sqrt(4)2.0>>> from math import sqrt as foobar #為函數提供別名>>> foobar(4)2.0
指派陳述式
序列解包
>>> x,y,z = 1,2,3>>> print x,y,z1 2 3>>> x,y=y,x>>> print x,y,z2 1 3
可以擷取或刪除字典中任意的鍵-值對,可以使用popitem方
>>> scoundrel ={'name':'robin','girlfriend':'marion'}>>> key,value = scoundrel.popitem()>>> key'name'>>> value'robin'
鏈式賦值
鏈式賦值是將同一個值賦給多個變數的捷徑。
>>> x = y = 42# 同下效果:>>> y = 42>>> x = y>>> x42
增理賦值
>>> x = 2>>> x += 1 #(x=x+1)>>> x *= 2 #(x=x*2)>>> x6
控制語句
if 語句:
name = raw_input('what is your name?')if name.endswith('chongshi'): print 'hello.mr.chongshi'#輸入>>> what is your name?chongshi #這裡輸入錯誤將沒有任何結果,因為程式不健壯#輸出hello.mr.chongshi
else子句
name = raw_input('what is your name?')if name.endswith('chongshi'): print 'hello.mr.chongshi'else: print 'hello,strager'#輸入>>> what is your name?hh #這裡輸和錯誤#輸出hello,strager
elif 子句
它是“else if”的簡寫
num = input('enter a numer:')if num > 0: print 'the numer is positive'elif num < 0: print 'the number is negative'else: print 'the nuber is zero'#輸入>>> enter a numer:-1#輸出the number is negative
嵌套
下面看一下if嵌套的例子(python是以縮排表示換行的)
name = raw_input('what is your name?')if name.endswith('zhangsan'): if name.startswith('mr.'): print 'hello.mr.zhangsan' elif name.startswith('mrs.'): print 'hello.mrs.zhangsan' else: print 'hello.zhangsan'else: print 'hello.stranger'
如果輸入的是“mr.zhangsan”輸出第一個print的內容;輸入mrs.zhangshan,輸出第二個print的內容;如果輸入“zhangsan”,輸出第三個print的內容;如果輸入的是別的什麼名,則輸出的將是最後一個結果(hello.stranger)
斷言
如果需要確保程式中的某個條件一定為真才能讓程式正常工作的話,assert 語句可以在程式中設定檢查點。
>>> age = 10>>> assert 0 < age < 100>>> age = -1>>> assert 0 < age < 100 , 'the age must be realistic'Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> assert 0 < age < 100 , 'the age must be realistic'AssertionError: the age must be realistic
迴圈語句
列印1到100的數(while迴圈)
x= 1while x <= 100: print x x += 1#輸出1234..100
再看下面的例子(while迴圈),用一迴圈保證使用者名稱字的輸入:
name = ''while not name: name = raw_input('please enter your name:')print 'hello.%s!' %name#輸入>>> please enter your name:huhu#輸出hello.huhu!
列印1到100的數(for 迴圈)
for number in range(1,101): print number#輸出1234..100
是不是比while 迴圈更簡潔,但根據我們以往學習其它語言的經驗,while的例子更容易理解。
一個簡單for 語句就能迴圈字典的所有鍵:
d = {'x':1,'y':2,'z':3}for key in d: print key,'corresponds to',d[key]#輸出>>> y corresponds to 2x corresponds to 1z corresponds to 3
break語句
break 用來結束迴圈,假設找100以內最大平方數,那麼程式可以從100往下迭代到0,步長為-1
from math import sqrtfor n in range(99,0,-1): root = sqrt(n) if root == int(root): print n break#輸出>>> 81
continue 語句
continue結束當前的迭代,“跳”到下一輪迴圈執行。
while True: s=raw_input('enter something:') if s == 'quit': break if len(s) < 3: continue print 'Input is of sufficient length'#輸入>>> enter something:huzhiheng #輸入長度大於3,提示資訊Input is of sufficient lengthenter something:ha #輸入長度小於3,要求重輸enter something:hah #輸入長度等於3,提示資訊Input is of sufficient lengthenter something:quit #輸入內容等於quit,結果