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