1瘟滨、實(shí)驗(yàn)環(huán)境Python3
2、Python基礎(chǔ)語(yǔ)法
2.1注釋
號(hào)可以注釋一行
'''或"""贮尖,注釋多段內(nèi)容
2.2標(biāo)識(shí)符(標(biāo)識(shí)某個(gè)東西的符號(hào))
第一個(gè)字符為字符或下劃線(不能為數(shù)字)
2.3數(shù)據(jù)類(lèi)型
常見(jiàn)數(shù)據(jù)類(lèi)型有數(shù)、字符串、列表(list)肿仑、元組(tuple)、集合(set)碎税、字典(dictionary)
數(shù):1234567890
字符串:a='abc',a="abc",a='''abc’‘’輸出結(jié)果一樣
a.split('w')#指定分隔符
a.strip())#默認(rèn)去除兩邊的空格
a.replace('w','h')#w替換成h
'_'.join(a)#必須是字符串拼接h_t_t_p_:_/_/_w_w_w_._o_l_d_b_o_y_e_d_u_._c_o_m_/
a.upper()#所有小寫(xiě)轉(zhuǎn)大寫(xiě)
a.lower()#所有大小轉(zhuǎn)小寫(xiě)
a.find('h')#元素所在位置尤慰,沒(méi)有的時(shí)候會(huì)返回-1
a.index('h')#元素所在位置,沒(méi)有的時(shí)候會(huì)報(bào)錯(cuò)
a.startswith()#判斷是否以xx開(kāi)頭雷蹂,返回布爾值
a.endswith()#判斷是否以xx結(jié)尾伟端,返回布爾值
a.count('w')#判斷指定元素出現(xiàn)的次
print(a.center(20, '*'))#不夠50個(gè)字符用*填充
列表:存儲(chǔ)多個(gè)元素的,x=[a,b,c,d]匪煌,x[0]代表第一個(gè)元素a责蝠,列表里面的元素可以重新賦值,如a[0]='123'
元組:存儲(chǔ)多個(gè)元素的萎庭,x=(a,b,c.d)霜医,x[0]代表第一個(gè)元素a,元組里面的元素不可以重新賦值
字典:{鍵:值驳规,鍵:值...}肴敛,d={"name":"zhang","sex":"man","job":"studen"},取值格式字典名["對(duì)應(yīng)鍵名"]吗购,如d["name"]顯示的是'zhang'
集合:可以去重医男、并集、差集等等巩搏,test1=set("aljfdlasjdasdfasf")昨登,test2=set("aljsdfopiewenfv"),去重可以用test1 or(或-) test2贯底,并集可以用test1 and test2等
2.4運(yùn)算符
常見(jiàn)的有+丰辣、-、×禽捆、/笙什、%等,優(yōu)先級(jí)與數(shù)學(xué)中基本一致胚想,優(yōu)先執(zhí)行需加()
2.5縮進(jìn)
同一層次的代碼琐凭,需要設(shè)置同樣的縮進(jìn)(一般4個(gè)空格或tab鍵為一級(jí))
2.6循環(huán)
2.6.1三種控制流概述
控制流-程序的執(zhí)行流程:順序結(jié)構(gòu);條件分之結(jié)構(gòu)浊服;循環(huán)結(jié)構(gòu)统屈;
2.6.2if判斷語(yǔ)句
a=10
b=1
if(a>9):
pring(a)
if(b<9):
print(b)
elif(a>9 and a<=19):
print("haha")
else:
print("怎么可能")
2.6.3while循環(huán)語(yǔ)句
a=0
while(a<10):
print("hello")
a+=1
2.6.4for循環(huán)-遍歷列表
a=["a","b","c"]
for i in a:
print(i)
for i in range(0,10):
#0,10為生成0-9的整數(shù)
print("hello")
2.6.4中斷語(yǔ)句
break:全部退出胚吁,直接中斷
a=["a","b","c"]
for i in a:
print(i)
if(i=="b"):
break
continue:中斷(跳過(guò))一次循環(huán),繼續(xù)下一次循環(huán)
a=["a","b","c"]
for i in a:
print(i)
if(i=="b"):
continue
2.6.5乘法口訣表
正序
for i in range(1,10):
for j in range(1,i+1):
print(str(i)+str("*")+str(j)+"="+str(i*j),end="\t")
print()
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
倒序
for i in range(9,0,-1):
for j in range(i,0,-1):
print(str(i)+str("*")+str(j)+"="+str(i*j),end="\t")
print()
9*9=81 9*8=72 9*7=63 9*6=54 9*5=45 9*4=36 9*3=27 9*2=189*1=9
8*8=64 8*7=56 8*6=48 8*5=40 8*4=32 8*3=24 8*2=16 8*1=8
7*7=49 7*6=42 7*5=35 7*4=28 7*3=21 7*2=14 7*1=7
6*6=36 6*5=30 6*4=24 6*3=18 6*2=12 6*1=6
5*5=25 5*4=20 5*3=15 5*2=10 5*1=5
4*4=16 4*3=12 4*2=8 4*1=4
3*3=9 3*2=6 3*1=3
2*2=4 2*1=2
1*1=1
3愁憔、Python函數(shù)與模塊
函數(shù)的本質(zhì)就是功能的封裝腕扶,可以提高效率和可讀性;
3.1局部變量和局部變量
變量生效范圍稱(chēng)為作用域吨掌,作用域?yàn)槿志褪侨肿兞堪氡В饔糜驗(yàn)榫植烤蜑榫植孔兞浚?/p>
3.2函數(shù)
3.2.1定義函數(shù)方法
函數(shù)定義格式:
def 函數(shù)名(參數(shù)):
函數(shù)體
def abc():
print("abcde")
3.2.2調(diào)用函數(shù)
函數(shù)調(diào)用格式:
函數(shù)名(參數(shù)):
acb()
3.2.2函數(shù)參數(shù)使用詳解
參數(shù):與外界溝通的接口,分為形參和實(shí)參膜宋,一般在函數(shù)定義的時(shí)候使用的參數(shù)是形參窿侈,一般在函數(shù)調(diào)用的時(shí)候使用的參數(shù)是實(shí)參;
def bjdx(a,b):
if(a>b):
print("a比b大")
else:
print("b比a大或相等")
bjdx(4,5)
定義形參a.b,調(diào)用時(shí)輸入a.b實(shí)參4,5進(jìn)行比較,結(jié)果b比a大或相等秋茫;
3.3模塊
模塊組成:程序段組合-->功能塊(函數(shù))組合-->模塊
3.3.1模塊導(dǎo)入方式
我們可以使用一下兩種方式導(dǎo)入模塊:
import 模塊名
或者
from ... import ...
3.3.2模塊導(dǎo)入使用
import cgi
cgi.closelog()
--------------
from cgi import closelog
兩種方式使用調(diào)用模塊并使用模塊方法
3.3.3第三方模塊的安裝
模塊的來(lái)源:
自帶模塊史简;
第三方模塊;
自定義模塊学辱;
安裝第三方模塊:
pip方式(網(wǎng)絡(luò)安裝)乘瓤;
whl下載安裝的方式(下載安裝);
whl下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs策泣,安裝直接使用pip install whl文件全名(pip install Cython?0.29.11?cp38?cp38m?win32.whl)
直接復(fù)制的方式衙傀;
anaconda安裝模塊;
3.3.4自定義模塊
只要你把*.py文件放到模塊文件目錄(一般在軟件安裝目錄lib下),他就是一個(gè)模塊了萨咕,可以被調(diào)用统抬;
4、文件操作
打開(kāi)文件使用open(文件地址危队,操作形式)
w :寫(xiě)入(類(lèi)似重定向>聪建,先清空在寫(xiě)入)
r :讀取
b :二進(jìn)制
a+:追加
讀取:
a=open("文件地址","參數(shù)(r)")
a.read()-讀取全部?jī)?nèi)容
a.readline()-一行一行讀取
a.close()
>>> a=open("/root/test1.txt","r")
>>> a.read()
'測(cè)試文本111111\n'
>>> a.close()
寫(xiě)入:
a=open("文件地址","參數(shù)(w)")
a.write("123123")-清空后再寫(xiě)入茫陆,追加寫(xiě)入?yún)?shù)要用a+
a.close()
>>> a=open("/root/test2.txt","w")
>>> a.write("測(cè)試寫(xiě)入功能!")
>>> a.close()
[root@test ~]# cat test2.txt
測(cè)試寫(xiě)入功能!
5金麸、異常處理
容錯(cuò)機(jī)制,提高程序容錯(cuò)性簿盅!
異常處理格式
try:
程序
except Exception as 異常名稱(chēng):
異常處理部分
事例1(出現(xiàn)異常顯示異常):
try:
for i in range(0,10):
print(i)
if(i==4):
print(jsd)
print("hello")
except Exception as errors:
print(errors)
#pass 也可以使用pass什么都不顯示
事例2(出現(xiàn)異常跳過(guò)繼續(xù)執(zhí)行):
for i in range(0,10):
try:
print(i)
if(i==4):
print(jsd)
except Exception as errors:
#pass 也可以使用pass什么都不顯示
print(errors)
print("hello")
6挥下、Python面向?qū)ο缶幊?
6.1面向?qū)ο笞兂筛攀?/h5>
面向?qū)ο缶幊碳碠OP編程,區(qū)別于面向過(guò)程編程桨醋,面向?qū)ο缶幊瘫容^適合開(kāi)發(fā)大項(xiàng)目(面向過(guò)程編程適合中小項(xiàng)目)棚瘟,會(huì)以更接近人類(lèi)的思維的角度去寫(xiě)程序;
6.2類(lèi)和對(duì)象
類(lèi):具有某種特征的失誤的集合(群體)喜最;
對(duì)象:群體(類(lèi))里面的個(gè)體偎蘸;
類(lèi)是抽象的,對(duì)象是具體的。
創(chuàng)建類(lèi)格式:
class 類(lèi)名:
類(lèi)里面的內(nèi)容
事例1:
#創(chuàng)建一個(gè)類(lèi)
class cl1:
pass
>>> cl1
<class '__main__.cl1'>
#實(shí)例化一個(gè)類(lèi)
>>> a=cl1()
>>> a
<__main__.cl1 object at 0x7fd798e95be0>
6.3構(gòu)造函數(shù)(構(gòu)造方法)
類(lèi)在實(shí)例化的時(shí)候自動(dòng)首先觸發(fā)的方法迷雪,構(gòu)造出一個(gè)對(duì)象的時(shí)候就首先出發(fā)的方法限书;
self:在類(lèi)中的方法必須加上self參數(shù)
構(gòu)造函數(shù):init(self,參數(shù))
構(gòu)造函數(shù)實(shí)際意義:初始化
class cl2:
def __init__(self):
print("I an cl2 self!")
>>> b=cl2()
I an cl2 self!
>>> b
<__main__.cl2 object at 0x7fd798e95dd8>
6.4給類(lèi)加上參數(shù)(給構(gòu)造方法加上參數(shù))
class cl3:
def __init__(self,name,job):
print(" My name is "+name+" My job is "+job)
>>> c=cl3("shuaige","teacher")
My name is shuaige My job is teacher
>>> c2=cl3("xiaoli","hah")
My name is xiaoli My job is hah
6.5屬性和方法
屬性:靜態(tài)的特征,如頭發(fā)章咧、手臂等蔗包,相當(dāng)于類(lèi)里面的變量;
屬性調(diào)用方法:
class cl4:
def __init__(self,name,job):
self.myname=name
self.myjob=job
>>> d=cl4("xiaobai","teacher")
>>> d
<__main__.cl4 object at 0x7fd798dfa198>
>>> d.myname
'xiaobai'
>>> d.myjob
'teacher'
方法:類(lèi)里面的函數(shù)慧邮,def 方法(函數(shù))名(self,參數(shù))
class cl5:
def myfunc1(self,name):
print("hello"+name)
>>> f=cl5()
>>> f.myfunc1("shuai")
helloshuai
class cl6:
def __init__(self,name):
self.myname=name
def myfunc1(self):
print("hello"+self.myname)
>>> f=cl6("zhangshuai")
>>> f
<__main__.cl6 object at 0x7f817793acc0>
>>> f.myfunc1()
hellozhangshuai
6.6繼承與重載
繼承:把某一個(gè)或多個(gè)類(lèi)(基類(lèi))的特征拿過(guò)來(lái);
重載:在子類(lèi)(派生類(lèi))里面對(duì)繼承過(guò)來(lái)的特征重新定義舟陆;
父類(lèi):基類(lèi)
子類(lèi):派生類(lèi)
基類(lèi)1(例如父親有說(shuō)的能力):
class father():
def speak(self):
print("I can speak!")
單繼承(例如兒子繼承父親說(shuō)的能力):
class son(father):
pass
>>> s=son()
>>> s.speak()
I can speak!
基類(lèi)2(例如母親有寫(xiě)的能力):
class mother():
def write(self):
print("I can write!")
多繼承(例如女兒繼承了父親說(shuō)和母親的寫(xiě)能力,自己還有聽(tīng)的能力)
class daughter(father,mother):
def listen(self):
print("I can listen!")
>>> h=daughter()
>>> h.speak()
I can speak!
>>> h.write()
I can write!
>>> h.listen()
I can listen!
重寫(xiě)(重載误澳,可以將繼承過(guò)來(lái)的能力進(jìn)行覆蓋):
class son2(father):
def speak(self):
print("I can speak 2!")
>>> j=son2()
>>> j.speak()
I can speak 2!
練習(xí):
將多個(gè)excel文檔合并(使用xlrd、xlwt秦躯、openpyxl忆谓、xlsxwriter模塊)
xlwt和xlsxwriter不支持修改表,信息追加會(huì)比較麻煩
Excel結(jié)構(gòu):
Workboot 工作滨獬小(相當(dāng)于一個(gè)類(lèi))
Worksheet 標(biāo)簽(相當(dāng)于一個(gè)屬性倡缠、方法)
title 標(biāo)題
row 行
column 列
cell 單元格
value 值
save() 存儲(chǔ)行為
add_sheet 增加一個(gè)表單
write 在指定單元各寫(xiě)入數(shù)據(jù)
簡(jiǎn)單事例1:
>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> ws = wb.active
>>> ws
<Worksheet "Sheet">
>>> ws.title = "課程表"
>>> wb
<openpyxl.workbook.workbook.Workbook object at 0x7f254a558d68>
>>> ws["A1"].value = "帥哥的課"
>>> ws["A1"]
<Cell '課程表'.A1>
>>> ws["A1"].value
'帥哥的課'
>>> ws["C5"] = "帥哥開(kāi)課了!"
>>> ws["C5"].value
'帥哥開(kāi)課了茎活!'
>>> wb.save(r"test.xlsx")
簡(jiǎn)單事例2:
>>> import xlrd
>>> wb = xlrd.open_workbook("/usr/lib/python2.7/site-packages/test.xlsx")
>>> sheet = wb.sheet_by_index(0)
>>> print("該Excel文件有行數(shù)"+str(sheet.nrows))
該Excel文件有行數(shù)5
>>> values_line = sheet.row_values(0)
>>> print(values_line)
['帥哥的課', '', '']
簡(jiǎn)單事例2(顯示表數(shù)據(jù)):
import xlrd
wb = xlrd.open_workbook("/usr/lib/python2.7/site-packages/test.xlsx")
sheet = wb.sheet_by_index(0)
print("該Excel文件有行數(shù)"+str(sheet.nrows))
該Excel文件有行數(shù)5
values_line = sheet.row_values(4)
print(values_line)
['帥哥的課', '', '']
顯示全部?jī)?nèi)容:
for i in range(0,sheet.nrows):
line = sheet.row_values(i)
print("第%d行數(shù)據(jù):"%i,end="")
#%d為數(shù)字占位符昙沦,調(diào)用后面i的值
print(line)
第0行數(shù)據(jù):['帥哥的課', '', '']
第1行數(shù)據(jù):['', '', '']
第2行數(shù)據(jù):['', '', '']
第3行數(shù)據(jù):['', '', '']
第4行數(shù)據(jù):['', '', '帥哥開(kāi)課了!']
持續(xù)更新中(我正在學(xué)習(xí)T乩蟆6芤)
BTC:3LD8DBk5nZSwmGoF1mvM12Pp5YqNFEvfLA
ETH:0xAD765200e7Feb98a2AF262387A41F078e9F91eAc