Python編程基礎
一、Python語言基本語法- Python是一個結合了解釋性、編譯性、互動性和麵向對象的高級程序設計語言,結構簡單,語法定義清晰。
- Python最具特色的就是使用縮進來表示代碼塊,不需要使用大括號{}。
- 縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。
answer = int(input("請輸入一個(ge) 整數:")) if answer == 2: print("hello,") print("it's True") else: print("sorry,") print("it's False")
1、基礎數據類型- Python3中有六個標準的數據類型:Number(數字)、String(字符串)、List(列表)、Tuple(元組)、Set(集合)、Dictionary(字典)。其中,不可變數據類型有:Number、String、Tuple;可變數據類型有:List、Dictionary、Set。
- Python3支持的數字類型有int(整數)、float(浮點數)、bool(布爾型)、complex(複數)四種類型。
- Python 中的變量是不需要聲明數據類型的,變量的“類型”是所指的內存中被賦值對象的類型。
- 同一變量可以反複賦值,而且可以是不同類型的變量,這也是Python語言稱之為動態語言的原因。
- Python允許同時為多個變量賦值。
brower = 'Google' #字符串類型 brower = 100 #整數類型 brower = 123.45 #浮點數類型 brower = 2 + 3j #複數類型 brower, count, addsum = 'Google', 100, 123.45 print(brower, count, addsum)
3、操作符和表達式 4、字符串- 字符串被定義為引號之間的字符集合,在Python中,字符串用單引號(’), 雙引號("), 三引號(’’’)括起來,且必須配對使用。
- 當Python字符串中有一個反斜杠時表示一個轉義序列的開始,稱反斜杠為轉義符。
44
字符串的運算
字符串子串可以用分離操作符([]或者[:])選取,Python特有的索引規則為(wei) :第一個(ge) 字符的索引是0,後續字符索引依次遞增,或者從(cong) 右向左編號,最後一個(ge) 字符的索引號為(wei) -1,前麵的字符依次減1。
5、流程控製1.分支結構:
又稱為(wei) 選擇結構,根據判斷條件,程序選擇執行特定的代碼。
Python語言中使用關(guan) 鍵字if、elif、else來表示,基本語法格式如下:
if condition: if-block [elif condition: elif-block else: else-block]
其中,冒號(:)是語句塊開始標記,[ ]內(nei) 為(wei) 可選項。另,在python中,當condition的值為(wei) False、0、None、””、()、[]、{}時,會(hui) 被解釋器解釋為(wei) 假(False)。
2. 循環語句循環結構是指滿足一定的條件下,重複執行特定代碼塊的一種編碼結構。Python中,常見的循環結構是for循環和while循環。
(1)while循環
while語句語法格式: while condition: while-block
用例:
i = 0 while i < 20: if i % 3 == 0: print(i,end= " ") i = i + 1
for v in Seq: for_block
其中,v是循環變量,Seq是序列類型,涵蓋字符串、列表及元組,在每輪循環中,循環變量被設置為(wei) 序列類型中的當前對象,for_block是循環體(ti) ,用來完成具體(ti) 功能。
例:求1+2+3+4+5的值
sum = 0 for i in range(1,6): sum = sum + i print("1+2+3+4+5 = %d"%sum)
二、內建數據結構在Python中,最基本的數據結構是序列。
序列中的成員有序排列,都可以通過下標偏移量訪問到它的一個(ge) 或幾個(ge) 成員。除了前麵已經介紹過的字符串,最常見的序列是列表和元組。
- 列表是Python中最具靈活性的有序集合對象類型。和字符串不同的是,列表具有可變長度、異構以及任意嵌套列表的特點。
- 列表是可變對象,支持在原處修改。
列表的常用方法
- L.append(v) :把元素v添加到列表L的結尾,相當於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在列表中出現的次數
- L.sort(key=None, reverse=False):對鏈表中的元素進行適當的排序。
列表的推導式
列表推導式提供了從(cong) 序列創建列表的簡單途徑。通常應用程序將一些操作應用於(yu) 某個(ge) 推導序列的每個(ge) 元素,用其獲得的結果作為(wei) 生成新列表的元素,或者根據確定的判定條件創建子序列
列表推導式示例:
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、元組- 元組有很多用途,例如:坐標(x, y),數據庫中的員工記錄等等。
- 元組和字符串一樣,不可改變,即不能給元組的一個獨立的元素賦值。
- 元組和列表看起來不同的一點是:元組用的是圓括號(),而列表用的是方括號[]。
tup = tuple('bar') #創建元組 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)) # 統計某個(ge) 數值在元組中出現的次數
3、字典- 字典,也稱映射,是一個由鍵/值對組成的非排序可變集合體。鍵值對在字典中以下麵的方式標記:
- 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、集合- 集合是一個由唯一元素組成的非排序集合體。
- 集合中的元素沒有特定順序,集合中沒有重複項。
- 可以使用大括號{ }或者set()函數創建集合,但是,創建一個空集合必須用 set(),因為{ }是用來創建一個空字典。
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))
三、函數- 函數是對程序邏輯進行過程化和結構化的一種方法,函數最大的優點是增強了代碼的重用性和可讀性。
- Python不但能靈活地定義函數,而且本身內置了很多有用的函數,可以直接調用。
函數定義(yi) 語法格式如下所示:
def function_name(arguments): function_block
關(guan) 於(yu) 函數定義(yi) 的說明:
- 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號();
- function_name是用戶自定義的函數名稱;
- arguments是零個或多個參數,且任何傳入參數必須放在圓括號內;
- 最後必須跟一個冒號 :,函數體從冒號開始,並且縮進;
- function_block實現函數功能的語句塊。
lambda函數
Python使用lambda來創建匿名函數,準確地說,lambda隻是一個(ge) 表達式,函數體(ti) 比def定義(yi) 的函數簡單的多,在lambda表達式中隻能封裝有限的邏輯。除此之外,lambda函數擁有自己的命名空間,且不能訪問自有參數列表之外或全局命名空間裏的參數。
例題:假如要編寫(xie) 函數實現計算多項式1+2x+y2+zy的值,可以簡單的定義(yi) 一個(ge) lambda函數來完成這個(ge) 功能。
polynominal = lambda x,y,z: 1+2*x+y**2+z*y polynominal(1,2,3)
四、文件操作 1、文件處理過程- 打開文件:open()函數;
- 讀取/寫入文件:read()、readline()、readlines()、write()等;
- 對讀取到的數據進行處理;
- 關閉文件:close()。
對文件操作之前需要用open() 函數打開文件,打開之後將返回一個(ge) 文件對象(file對象)。open 函數的語法格式如下:
file_object = open(file_name [, access_mode = “r”, buffering= -1])
f = open("記事本.txt",mode = 'r') content = f.read(10) #設置讀取內(nei) 容的長度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),即逗號分隔值,也稱為(wei) 字符分隔值,因為(wei) 分隔符除了逗號,還可以是製表符,是一種常用的文本格式,用以存儲(chu) 表格數據,包括數字或者字符。
CSV文件具有如下特點:
- 純文本,使用某個字符集,比如ASCII、Unicode或GB2312;
- 以行為單位讀取數據,每行一條記錄;
- 每條記錄被分隔符分隔為字段;
- 每條記錄都有同樣的字段序列。
Python內(nei) 置了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、文件寫(xie) 入與(yu) 關(guan) 閉
文件的寫(xie) 入
- write() 函數用於向文件中寫入指定字符串,同時需要將open函數中文件打開的參數設置為 mode = w。
- write() 是逐次寫入,writelines() 可將一個列表中的所有數據一次性寫入文件。
- 如果有換行需要,則要在每條數據後增加換行符,同時用“字符串 .join() ”的方法將每個變量數據聯合成一個字符串,並增加間隔符 “\t”。
用例:
import csv content = [['0','hanmei','23','81'], ['1','mayi','18','99']] f = open("test.csv","w",newline='')#如果不加newline="",就會(hui) 出現空行 content_out = csv.writer(f)#生成writer對象存儲(chu) 器 for con in content: content_out.writerow(con) f.close()
運行就會(hui) 生成一個(ge) csv文件
打開test.csv文件:
關(guan) 閉文件
文件操作完畢,一定要關(guan) 閉文件close(),以便釋放資源供其他程序使用。