Python編程基礎(chǔ)
一、Python語(yǔ)言基本語(yǔ)法- Python是一個(gè)結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮母呒?jí)程序設(shè)計(jì)語(yǔ)言,結(jié)構(gòu)簡(jiǎn)單,語(yǔ)法定義清晰。
- Python最具特色的就是使用縮進(jìn)來表示代碼塊,不需要使用大括號(hào){}。
- 縮進(jìn)的空格數(shù)是可變的,但是同一個(gè)代碼塊的語(yǔ)句必須包含相同的縮進(jìn)空格數(shù)。
answer = int(input("請(qǐng)輸入一個(gè)整數(shù):")) if answer == 2: print("hello,") print("it's True") else: print("sorry,") print("it's False")1、基礎(chǔ)數(shù)據(jù)類型
- Python3中有六個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number(數(shù)字)、String(字符串)、List(列表)、Tuple(元組)、Set(集合)、Dictionary(字典)。其中,不可變數(shù)據(jù)類型有:Number、String、Tuple;可變數(shù)據(jù)類型有:List、Dictionary、Set。
- Python3支持的數(shù)字類型有int(整數(shù))、float(浮點(diǎn)數(shù))、bool(布爾型)、complex(復(fù)數(shù))四種類型。
- Python 中的變量是不需要聲明數(shù)據(jù)類型的,變量的“類型”是所指的內(nèi)存中被賦值對(duì)象的類型。
- 同一變量可以反復(fù)賦值,而且可以是不同類型的變量,這也是Python語(yǔ)言稱之為動(dòng)態(tài)語(yǔ)言的原因。
- Python允許同時(shí)為多個(gè)變量賦值。
brower = 'Google' #字符串類型 brower = 100 #整數(shù)類型 brower = 123.45 #浮點(diǎn)數(shù)類型 brower = 2 + 3j #復(fù)數(shù)類型 brower, count, addsum = 'Google', 100, 123.45 print(brower, count, addsum)3、操作符和表達(dá)式
- 運(yùn)算符用于執(zhí)行程序代碼運(yùn)算,會(huì)針對(duì)一個(gè)以上操作數(shù)項(xiàng)目來進(jìn)行運(yùn)算。
- Python語(yǔ)言支持算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。
- 表達(dá)式是由操作對(duì)象和操作符組成的有意義的式子。
- 字符串被定義為引號(hào)之間的字符集合,在Python中,字符串用單引號(hào)(’), 雙引號(hào)("), 三引號(hào)(’’’)括起來,且必須配對(duì)使用。
- 當(dāng)Python字符串中有一個(gè)反斜杠時(shí)表示一個(gè)轉(zhuǎn)義序列的開始,稱反斜杠為轉(zhuǎn)義符。
44
字符串的運(yùn)算
字符串子串可以用分離操作符([]或者[:])選取,Python特有的索引規(guī)則為:第一個(gè)字符的索引是0,后續(xù)字符索引依次遞增,或者從右向左編號(hào),最后一個(gè)字符的索引號(hào)為-1,前面的字符依次減1。
下表給出了字符串的常用運(yùn)算。
字符串的常見方法屬性
1.分支結(jié)構(gòu):
又稱為選擇結(jié)構(gòu),根據(jù)判斷條件,程序選擇執(zhí)行特定的代碼。
Python語(yǔ)言中使用關(guān)鍵字if、elif、else來表示,基本語(yǔ)法格式如下:
if condition: if-block [elif condition: elif-block else: else-block]
其中,冒號(hào)(:)是語(yǔ)句塊開始標(biāo)記,[ ]內(nèi)為可選項(xiàng)。另,在python中,當(dāng)condition的值為False、0、None、””、()、[]、{}時(shí),會(huì)被解釋器解釋為假(False)。
2. 循環(huán)語(yǔ)句循環(huán)結(jié)構(gòu)是指滿足一定的條件下,重復(fù)執(zhí)行特定代碼塊的一種編碼結(jié)構(gòu)。Python中,常見的循環(huán)結(jié)構(gòu)是for循環(huán)和while循環(huán)。
(1)while循環(huán)
while語(yǔ)句語(yǔ)法格式: while condition: while-block
用例:
i = 0 while i < 20: if i % 3 == 0: print(i,end= " ") i = i + 1
(2)for 循環(huán):
for循環(huán)的語(yǔ)句格式:
for v in Seq: for_block
其中,v是循環(huán)變量,Seq是序列類型,涵蓋字符串、列表及元組,在每輪循環(huán)中,循環(huán)變量被設(shè)置為序列類型中的當(dāng)前對(duì)象,for_block是循環(huán)體,用來完成具體功能。
例:求1+2+3+4+5的值
sum = 0 for i in range(1,6): sum = sum + i print("1+2+3+4+5 = %d"%sum)二、內(nèi)建數(shù)據(jù)結(jié)構(gòu)
在Python中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列。
序列中的成員有序排列,都可以通過下標(biāo)偏移量訪問到它的一個(gè)或幾個(gè)成員。除了前面已經(jīng)介紹過的字符串,最常見的序列是列表和元組。
- 列表是Python中最具靈活性的有序集合對(duì)象類型。和字符串不同的是,列表具有可變長(zhǎng)度、異構(gòu)以及任意嵌套列表的特點(diǎn)。
- 列表是可變對(duì)象,支持在原處修改。
列表的常用方法
- L.append(v) :把元素v添加到列表L的結(jié)尾,相當(dāng)于a[len(a)] = [v]
- L.insert(i,v):將值v插入到列表L的索引i處
- L.index(x):返回列表中第一個(gè)值為x的元素的索引
- L.remove(v):從列表L中移除第一次找到的值v
- L.pop([i]):從列表的指定位置刪除元素,并將其返回。如果沒有指定索引,a.pop()返回最后一個(gè)元素。
- L.reverse():倒排列表中的元素
- L.count(x):返回x在列表中出現(xiàn)的次數(shù)
- L.sort(key=None, reverse=False):對(duì)鏈表中的元素進(jìn)行適當(dāng)?shù)呐判颉?/LI>
列表的推導(dǎo)式
列表推導(dǎo)式提供了從序列創(chuàng)建列表的簡(jiǎn)單途徑。通常應(yīng)用程序?qū)⒁恍┎僮鲬?yīng)用于某個(gè)推導(dǎo)序列的每個(gè)元素,用其獲得的結(jié)果作為生成新列表的元素,或者根據(jù)確定的判定條件創(chuàng)建子序列
列表推導(dǎo)式示例:
vec = [2, 4, 6, 8, 10] print([3*x for x in vec]) vec = [2, 4, 6,8,10] print([3*x for x in vec if x > 6]) vec1 = [2, 4, 6] vec2 = [4, 3, -9] print([x*y for x in vec1 for y in vec2 if x*y>0])2、元組
- 元組有很多用途,例如:坐標(biāo)(x, y),數(shù)據(jù)庫(kù)中的員工記錄等等。
- 元組和字符串一樣,不可改變,即不能給元組的一個(gè)獨(dú)立的元素賦值。
- 元組和列表看起來不同的一點(diǎn)是:元組用的是圓括號(hào)(),而列表用的是方括號(hào)[]。
tup = tuple('bar') #創(chuàng)建元組 print('輸出元組tup:',tup) #輸出元組 nested_tup = (4,5,6),(7,8) print('輸出元組圖tup:',nested_tup)#輸出元素是元組的元組 print('元組的連接',tup+tuple('wwy')) a,b,c = tup #元組的拆分 print(a,b,c) print(tup.count(a)) # 統(tǒng)計(jì)某個(gè)數(shù)值在元組中出現(xiàn)的次數(shù)3、字典
- 字典,也稱映射,是一個(gè)由鍵/值對(duì)組成的非排序可變集合體。鍵值對(duì)在字典中以下面的方式標(biāo)記:
- dict = {key1 : value1,key2 : value2 }
- 鍵/值對(duì)用冒號(hào)分割,而各個(gè)元素之間用逗號(hào)分割,所有元素都包括在花括號(hào)中。值得注意的是,字典中的鍵必須是唯一的,只能使用不可變的對(duì)象(比如字符串)來作為字典的鍵,字典中的鍵/值對(duì)是沒有順序的。
scientists = {'Newton' : 1642, 'Darwin' : 1809, 'Turing' : 1912} print('keys:', scientists.keys()) #返回字典中的所有鍵 print('values:', scientists.values()) #返回字典中的所有值 print('items:', scientists.items()) #返回所有鍵值對(duì),形式(鍵, 值) print('get:', scientists.get('Curie', 1867)) # get方法 temp = {'Curie' : 1867, 'Hopper' : 1906, 'Franklin' : 1920} scientists.update(temp) #用字典temp更新字典scientists print('after update:', scientists) scientists.clear() # 清空字典 print('after clear:', scientists)4、集合
- 集合是一個(gè)由唯一元素組成的非排序集合體。
- 集合中的元素沒有特定順序,集合中沒有重復(fù)項(xiàng)。
- 可以使用大括號(hào){ }或者set()函數(shù)創(chuàng)建集合,但是,創(chuàng)建一個(gè)空集合必須用 set(),因?yàn)閧 }是用來創(chuàng)建一個(gè)空字典。
set1 = set([0,1,2,3,4]) set2 = set([1,3,5,7,9]) print(set1.issubset(set2)) print(set1.union(set2)) print(set2.difference(set1)) print(set1.issubset(set2))三、函數(shù)
- 函數(shù)是對(duì)程序邏輯進(jìn)行過程化和結(jié)構(gòu)化的一種方法,函數(shù)最大的優(yōu)點(diǎn)是增強(qiáng)了代碼的重用性和可讀性。
- Python不但能靈活地定義函數(shù),而且本身內(nèi)置了很多有用的函數(shù),可以直接調(diào)用。
函數(shù)定義語(yǔ)法格式如下所示:
def function_name(arguments): function_block
關(guān)于函數(shù)定義的說明:
- 函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)();
- function_name是用戶自定義的函數(shù)名稱;
- arguments是零個(gè)或多個(gè)參數(shù),且任何傳入?yún)?shù)必須放在圓括號(hào)內(nèi);
- 最后必須跟一個(gè)冒號(hào) :,函數(shù)體從冒號(hào)開始,并且縮進(jìn);
- function_block實(shí)現(xiàn)函數(shù)功能的語(yǔ)句塊。
lambda函數(shù)
Python使用lambda來創(chuàng)建匿名函數(shù),準(zhǔn)確地說,lambda只是一個(gè)表達(dá)式,函數(shù)體比def定義的函數(shù)簡(jiǎn)單的多,在lambda表達(dá)式中只能封裝有限的邏輯。除此之外,lambda函數(shù)擁有自己的命名空間,且不能訪問自有參數(shù)列表之外或全局命名空間里的參數(shù)。
例題:假如要編寫函數(shù)實(shí)現(xiàn)計(jì)算多項(xiàng)式1+2x+y2+zy的值,可以簡(jiǎn)單的定義一個(gè)lambda函數(shù)來完成這個(gè)功能。
polynominal = lambda x,y,z: 1+2*x+y**2+z*y polynominal(1,2,3)四、文件操作 1、文件處理過程
- 打開文件:open()函數(shù);
- 讀取/寫入文件:read()、readline()、readlines()、write()等;
- 對(duì)讀取到的數(shù)據(jù)進(jìn)行處理;
- 關(guān)閉文件:close()。
對(duì)文件操作之前需要用open() 函數(shù)打開文件,打開之后將返回一個(gè)文件對(duì)象(file對(duì)象)。open 函數(shù)的語(yǔ)法格式如下:
file_object = open(file_name [, access_mode = “r”, buffering= -1])
f = open("記事本.txt",mode = 'r') content = f.read(10) #設(shè)置讀取內(nèi)容的長(zhǎng)度size print(content) f.close() print(type(content)) 按行讀取txt文件 f = open("記事本.txt",mode='r') content = f.readlines() print(content) f.close()3、讀取csv文件
CSV (Comma Separated Values),即逗號(hào)分隔值,也稱為字符分隔值,因?yàn)榉指舴硕禾?hào),還可以是制表符,是一種常用的文本格式,用以存儲(chǔ)表格數(shù)據(jù),包括數(shù)字或者字符。
CSV文件具有如下特點(diǎn):
- 純文本,使用某個(gè)字符集,比如ASCII、Unicode或GB2312;
- 以行為單位讀取數(shù)據(jù),每行一條記錄;
- 每條記錄被分隔符分隔為字段;
- 每條記錄都有同樣的字段序列。
Python內(nèi)置了csv模塊,import csv之后就可以讀取CSV文件了。
import csv with open("student.csv", "r") as f: reader = csv.reader(f) rows = [row for row in reader] for item in rows: print(item)4、文件寫入與關(guān)閉
文件的寫入
- write() 函數(shù)用于向文件中寫入指定字符串,同時(shí)需要將open函數(shù)中文件打開的參數(shù)設(shè)置為 mode = w。
- write() 是逐次寫入,writelines() 可將一個(gè)列表中的所有數(shù)據(jù)一次性寫入文件。
- 如果有換行需要,則要在每條數(shù)據(jù)后增加換行符,同時(shí)用“字符串 .join() ”的方法將每個(gè)變量數(shù)據(jù)聯(lián)合成一個(gè)字符串,并增加間隔符 “\t”。
用例:
import csv content = [['0','hanmei','23','81'], ['1','mayi','18','99']] f = open("test.csv","w",newline='')#如果不加newline="",就會(huì)出現(xiàn)空行 content_out = csv.writer(f)#生成writer對(duì)象存儲(chǔ)器 for con in content: content_out.writerow(con) f.close()
運(yùn)行就會(huì)生成一個(gè)csv文件
打開test.csv文件:
關(guān)閉文件
文件操作完畢,一定要關(guān)閉文件close(),以便釋放資源供其他程序使用。