python基本語(yǔ)法
1.python介紹
Python 是一個(gè)高層次的結(jié)合了解釋性晕换、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言。
Python 的設(shè)計(jì)具有很強(qiáng)的可讀性,相比其他語(yǔ)言經(jīng)常使用英文關(guān)鍵字佩抹,其他語(yǔ)言的一些標(biāo)點(diǎn)符號(hào),它具有比其他語(yǔ)言更有特色語(yǔ)法結(jié)構(gòu)取董。
Python 是一種解釋型語(yǔ)言: 這意味著開(kāi)發(fā)過(guò)程中沒(méi)有了編譯這個(gè)環(huán)節(jié)棍苹。類(lèi)似于PHP和Perl語(yǔ)言。
Python 是交互式語(yǔ)言: 這意味著茵汰,您可以在一個(gè)Python提示符枢里,直接互動(dòng)執(zhí)行寫(xiě)你的程序。
Python 是面向?qū)ο笳Z(yǔ)言: 這意味著Python支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對(duì)象的編程技術(shù)蹂午。
Python 是初學(xué)者的語(yǔ)言:Python 對(duì)初級(jí)程序員而言栏豺,是一種偉大的語(yǔ)言,它支持廣泛的應(yīng)用程序開(kāi)發(fā)豆胸,從簡(jiǎn)單的文字處理到 WWW 瀏覽器再到游戲奥洼。
2.發(fā)展歷史
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所設(shè)計(jì)出來(lái)的晚胡。
Python 本身也是由諸多其他語(yǔ)言發(fā)展而來(lái)的,這包括 ABC灵奖、Modula-3、C估盘、C++瓷患、Algol-68、SmallTalk遣妥、Unix shell 和其他的腳本語(yǔ)言等等擅编。
像 Perl 語(yǔ)言一樣,Python 源代碼同樣遵循 GPL(GNU General Public License)協(xié)議箫踩。
現(xiàn)在 Python 是由一個(gè)核心開(kāi)發(fā)團(tuán)隊(duì)在維護(hù)爱态,Guido van Rossum 仍然占據(jù)著至關(guān)重要的作用
3.python的特點(diǎn)
1.易于學(xué)習(xí):Python有相對(duì)較少的關(guān)鍵字,結(jié)構(gòu)簡(jiǎn)單班套,和一個(gè)明確定義的語(yǔ)法肢藐,學(xué)習(xí)起來(lái)更加簡(jiǎn)單。
2.易于閱讀:Python代碼定義的更清晰吱韭。
3.易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的吆豹。
4.一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù):Python的最大的優(yōu)勢(shì)之一是豐富的庫(kù),跨平臺(tái)的理盆,在UNIX痘煤,Windows和Macintosh兼容很好。
5.互動(dòng)模式:互動(dòng)模式的支持猿规,您可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語(yǔ)言衷快,互動(dòng)的測(cè)試和調(diào)試代碼片斷。
6.可移植:基于其開(kāi)放源代碼的特性姨俩,Python已經(jīng)被移植(也就是使其工作)到許多平臺(tái)蘸拔。
7.可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼师郑,或者是想要編寫(xiě)一些不愿開(kāi)放的算法,你可以使用C或C++完成那部分程序调窍,然后從你的Python程序中調(diào)用宝冕。
8.數(shù)據(jù)庫(kù):Python提供所有主要的商業(yè)數(shù)據(jù)庫(kù)的接口。
9.GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用邓萨。
10.可嵌入: 你可以將Python嵌入到C/C++程序地梨,讓你的程序的用戶(hù)獲得"腳本化"
4.python及python安裝
。缔恳。宝剖。
5.第一個(gè)python程序
1.創(chuàng)建python file
2.練習(xí)打印holle word
6.python變量和數(shù)據(jù)類(lèi)型
6.1.變量的定義
? ??在程序中,有時(shí)我們需要對(duì)2個(gè)數(shù)據(jù)進(jìn)行求和歉甚,那么該怎樣做呢万细?
大家類(lèi)比一下現(xiàn)實(shí)生活中,比如去超市買(mǎi)東西铃芦,往往咱們需要一個(gè)菜籃子雅镊,用來(lái)進(jìn)行存儲(chǔ)物品,等到所有的物品都購(gòu)買(mǎi)完成后刃滓,在收銀臺(tái)進(jìn)行結(jié)賬即可
如果在程序中仁烹,需要把2個(gè)數(shù)據(jù),或者多個(gè)數(shù)據(jù)進(jìn)行求和的話(huà)咧虎,那么就需要把這些數(shù)據(jù)先存儲(chǔ)起來(lái)卓缰,然后把它們累加起來(lái)即可
6.1.1概念
? ??整數(shù)
Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù)砰诵,在Python程序中征唬,整數(shù)的表示方法和數(shù)學(xué)上的寫(xiě)法一模一樣,例如:1茁彭,100总寒,-8080,0理肺,等等摄闸。
????浮點(diǎn)數(shù)
浮點(diǎn)數(shù)也就是小數(shù),之所以稱(chēng)為浮點(diǎn)數(shù)妹萨,是因?yàn)榘凑湛茖W(xué)記數(shù)法表示時(shí)年枕,一個(gè)浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置是可變的,比如乎完,1.23x109和12.3x108是相等的熏兄。浮點(diǎn)數(shù)可以用數(shù)學(xué)寫(xiě)法,如1.23,3.14摩桶,-9.01桥状,等等。
整數(shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部存儲(chǔ)的方式是不同的典格,整數(shù)運(yùn)算永遠(yuǎn)是精確的(除法難道也是精確的岛宦?是的!)耍缴,而浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差。
????字符串
字符串是以''或""括起來(lái)的任意文本挽霉,比如'abc'防嗡,"xyz"等等。請(qǐng)注意侠坎,''或""本身只是一種表示方式蚁趁,不是字符串的一部分,因此实胸,字符串'abc'只有a他嫡,b,c這3個(gè)字符庐完。
????布爾值
布爾值和布爾代數(shù)的表示完全一致钢属,一個(gè)布爾值只有True、False兩種值门躯,要么是True淆党,要么是False,在Python中讶凉,可以直接用True染乌、False表示布爾值(請(qǐng)注意大小寫(xiě)),也可以通過(guò)布爾運(yùn)算計(jì)算出來(lái)懂讯。
????布爾值可以用and荷憋、or和not運(yùn)算。
and運(yùn)算是與運(yùn)算褐望,只有所有都為 True勒庄,and運(yùn)算結(jié)果才是 True。A與B true true
or運(yùn)算是或運(yùn)算譬挚,只要其中有一個(gè)為 True锅铅,or 運(yùn)算結(jié)果就是 True。
not運(yùn)算是非運(yùn)算减宣,它是一個(gè)單目運(yùn)算符盐须,把 True 變成 False,F(xiàn)alse 變成 True漆腌。
????空值
空值是Python里一個(gè)特殊的值贼邓,用None表示阶冈。None不能理解為0,因?yàn)?是有意義的塑径,而None是一個(gè)特殊的空值女坑。
6.2標(biāo)識(shí)符
????1.什么是標(biāo)識(shí)符?
開(kāi)發(fā)人員在程序中自定義的一些符號(hào)和名稱(chēng)
標(biāo)識(shí)符是自己定義的,如變量名 统舀、函數(shù)名等
6.3 python中print語(yǔ)句
print() 方法用于打印輸出匆骗,最常見(jiàn)的一個(gè)函數(shù)。
語(yǔ)法:
print(*objects, sep=' ', end='\n', file=sys.stdout)
參數(shù):
objects -- 復(fù)數(shù)誉简,表示可以一次輸出多個(gè)對(duì)象碉就。輸出多個(gè)對(duì)象時(shí),需要用 , 分隔闷串。
sep -- 用來(lái)間隔多個(gè)對(duì)象瓮钥,默認(rèn)值是一個(gè)空格。
end -- 用來(lái)設(shè)定以什么結(jié)尾烹吵。默認(rèn)值是換行符 \n碉熄,我們可以換成其他字符串。
file -- 要寫(xiě)入的文件對(duì)象肋拔。
6.4 Python中input語(yǔ)句
input() 用來(lái)獲取控制臺(tái)的輸入锈津。
語(yǔ)法:
input([prompt])
7.運(yùn)算符
? ? 1.算術(shù)運(yùn)算符
? ? ? ? +? ? -? ? *? ? /? ? %? ? **? ? //
? ? 2.邏輯運(yùn)算符
? ? ? ? and? ? or? ? not
? ? 3.比較運(yùn)算符
? ? ? ? ==? ? I=? ? >? ? <? ? >=? ? <=
? ? 4.賦值運(yùn)算符
? ? ? ? =? ? +=? ? -=? ? *=? ? /=? ? %=? ? **=? ? //=? ? =
python基礎(chǔ)--語(yǔ)句
1.判斷語(yǔ)句
? ??在程序中如果某些條件滿(mǎn)足,才能做某件事情只损,而不滿(mǎn)足時(shí)不允許做一姿,這就是所謂的判斷
1.1 if語(yǔ)句的使用格式
? ??if 要判斷的條件:
? ? ? ? 條件成立時(shí),要做的事情
1.2 if-else的使用格式
? ??if 要判斷的條件:
? ? ????條件成立時(shí)跃惫,要做的事情
????else:
? ????? 條件不成立時(shí)叮叹,要做的事情
1.3 if-elif-else的使用格式
? ??if 要判斷的條件:
? ? ????條件成立時(shí),要做的事情
????elif 要判斷的條件:
? ? ????條件成立時(shí)爆存,要做的事情
????else:
? ? ????條件不成立時(shí)蛉顽,要做的事情
1.4 if嵌套
? ??if 要判斷的條件:
? ? ????條件成立時(shí),要做的事情
? ? if 要判斷的條件:
? ? ? ? 條件成立時(shí)先较,要做的事情
? ? else:
? ? ? ? 條件不成立時(shí)携冤,要做的事情
????else:
? ????? 條件不成立時(shí),要做的事情
2.循環(huán)語(yǔ)句
2.1 while循環(huán)
2.1.1 while循環(huán)的格式
? ??while 條件:
? ????? 條件成立時(shí)闲勺,要做的事情
? ????? 條件成立時(shí)曾棕,要做的事情
? ????? .....
2.1.2while循環(huán)嵌套
? ??while 條件:
????? ? 條件成立時(shí),要做的事情
? ????? 條件成立時(shí)菜循,要做的事情
? ????? .....
? ? while 條件:
? ? ? ? 條件成立時(shí)翘地,要做的事情
? ? ? ? 條件成立時(shí),要做的事情
? ? ? ? .....
2.2 for循環(huán)? ??
2.2.1for循環(huán)的格式
? ??for 臨時(shí)變量 in 列表或者字符串等可迭代對(duì)象:
? ????? 循環(huán)滿(mǎn)足條件時(shí)執(zhí)行的代碼
3. pass的使用
? ??1. Pythonpass是空語(yǔ)句,是為了保持程序結(jié)構(gòu)的完整性衙耕。
????2. pass不做任何事情昧穿,一般用做占位語(yǔ)句。
? ??for i in range(10):
????????pass
Python列表
1.? ??列表的介紹??
????思考:前面學(xué)習(xí)的字符串可以用來(lái)存儲(chǔ)一串信息橙喘,那么想一想时鸵,怎樣存儲(chǔ)咱們班所有同學(xué)的名字呢?定義100個(gè)變量厅瞎,每個(gè)變量存放一個(gè)學(xué)生的姓名可行嗎饰潜?有更好的辦法嗎???
1.1格式
? ??變量=[磁奖,囊拜,,]
2.列表的相關(guān)操作? ??
????names1 = ['xiaoWang','xiaoZhang','xiaoHua']
????names2=[23,34,45]
????name='anfly'
2.1列表的新增
????append, extend, insert
2.2列表的修改
????修改元素的時(shí)候比搭,要通過(guò)下標(biāo)來(lái)確定要修改的是哪個(gè)元素,然后才能進(jìn)行修改
2.2.1列表的修改
????names1[0]? ="xiaoli"
????print(names1)
????#['xiaoli', 'xiaoZhang',? 'xiaoHua' ]
2.3列表的刪除
? ??del:根據(jù)下標(biāo)進(jìn)行刪除
????pop:刪除最后一個(gè)元素
????remove:根據(jù)元素的值進(jìn)行刪除
2.4列表的查詢(xún)
? ??index, count
案例:
? ??print(names1.index("xiaoZhang"))
????#1
????print(names1.index("xiaoZhang1"))
????#ValueError: 'xiaoZhang1' is not in list
2.5列表的排序
? ? 1.sort方法是將list按特定順序重新排列南誊,默認(rèn)為由小到大身诺,參數(shù)reverse=True可改為倒序,由大到小抄囚。
? ? 2.reverse方法是將list反轉(zhuǎn)
案例:
? ??nums=[34,22,15,68,89]
????nums.sort()
????print(nums)
????#[15, 22, 34, 68, 89]
案例:反轉(zhuǎn)
? ??nums=[34,22,15,68,89
????]nums.reverse()
????print(nums)
????#[89, 68, 15, 22, 34]
2.6列表的循環(huán)取值? ??
for循環(huán)? ??
? ??namesList=['xiaoWang','xiaoZhang','xiaoHua']
????fornameinnamesList:
????????print(name)
while循環(huán)
? ??namesList=['xiaoWang','xiaoZhang','xiaoHua']
????length=len(namesList)
????i=0
????whilei<length:
????????print(namesList[i])
????????i+=1
2.7列表的嵌套
? ??類(lèi)似while循環(huán)的嵌套霉赡,列表也是支持嵌套的
python--元組和字典? ??
1.元組
????Python的元組與列表類(lèi)似,不同之處在于元組的元素不能修改幔托。元組使用小括號(hào)穴亏,列表使用方括號(hào)。
1.1元組的格式
格式:
? ??變量名=(,,,,)
1.2訪(fǎng)問(wèn)元組
案例:
? ??aTuple=(23,35,56,34,11,21)
????print(aTuple[2]
????)#56
1.3查詢(xún)個(gè)數(shù)
案例:
? ??aTuple=('b','c','d','e','f','g')
????print(aTuple.count('d'))
????#1
1.4查詢(xún)索引
案例:
? ??aTuple=('b','c','d','e','f','g')
????print(aTuple.index('d',0,4))
????#2
1.5修改數(shù)據(jù)(不能修改)
案例:
? ??aTuple=('b','c','d','e','f','g')
????aTuple[1]=23
????#TypeError: 'tuple' object does not support item assignment
1.6類(lèi)型轉(zhuǎn)換
列表轉(zhuǎn)換元組
案例:
? ??aa=[23,34,45,56,67]
????tuple(aa)print(aa)
????#[23, 34, 45, 56, 67]
元組轉(zhuǎn)換列表
案例:
? ??aTuple=('b','c','d','e','f','g')
????a=list(aTuple)print(a)
????#['b', 'c', 'd', 'e', 'f', 'g']
1.7元組的循環(huán)取值
? ? 1.for循環(huán)
? ? 2.while循環(huán)
2.字典
2.1字典的格式? ??
? ??變量名={key1:value,key2:value,,,}
2.2根據(jù)建訪(fǎng)問(wèn)值
? ??info={"name":"anfly","age":18,"sex":"男"}
????print(info["name"])
????#anfly
2.3修改元素
? ??info={"name":"anfly","age":12,"sex":"男"}
????info["age"]=14
????print(info)
????#{'name': 'anfly', 'age': 14, 'sex': '男'}
2.4添加元素
案例:
? ??info={"name":"anfly","age":12,"sex":"男"}
????info["gender"]="屬雞"
????print(info)
????#{'name': 'anfly', 'age': 12, 'sex': '男', 'gender': '屬雞'}
2.5刪除元素
案例:
? ??info={"name":"anfly","age":12,"sex":"男"}
????del????info
????print(info)
????#NameError: name 'info' is not defined
2.6查詢(xún)長(zhǎng)度
案例:
? ??info={"name":"anfly","age":12,"sex":"男"}
????print(len(info))
????#3
2.7字典中循環(huán)
案例:
? ??info={"name":"anfly","age":12,"sex":"男"}
????foriininfo.keys():
????print(i)
取出字典中的key和value
方式:
? ??info={"name":"anfly","age":12,"sex":"男"}
????foriininfo.keys():
????print(i,info[i])
集合和函數(shù)
1.集合
1.1集合的特征
? ??集合是無(wú)序的重挑,集合中的元素是唯一的嗓化,集合一般用于元組或者列表中的元素去重
1.2集合的格式
? ??變量名=set()
????變量名.add(元素)
????# 必須不能初始化值
1.3天假元素
案例:
? ??nums={11,24,45,96,28}
????nums.add(42)print(nums)
????#{96, 42, 11, 45, 24, 28}
1.4刪除元素
案例:
? ??nums={11,24,45,96,28}
????nums.remove(24)
????print(nums)
????#{96, 11, 45, 28}
1.5集合的交集和并集
案例:
? ??set1={"anfly","tom","haha"}
????set2={"anfly","susala"}
????set3=set1&set2
????print(set3)
1.6公共方法
公共方法(+)
公共方法(*)
公共方法(in)
2. 函數(shù)
2.1什么是函數(shù)
? ??在開(kāi)發(fā)程序時(shí),需要某塊代碼多次谬哀,但是為了提高編寫(xiě)的效率以及代碼的重用刺覆,所以把具有獨(dú)立功能的代碼塊組織為一個(gè)小模塊,這就是函數(shù)
2.2 函數(shù)定義和調(diào)用
格式:
? ??def函數(shù)名():
????????執(zhí)行語(yǔ)句
????函數(shù)名()
????#調(diào)用函數(shù)
案例:
? ??defhello():
????????print("hello word")
????hello()
2.3函數(shù)參數(shù)
? ??思考:現(xiàn)在需要定義一個(gè)函數(shù)史煎,這個(gè)函數(shù)能夠完成2個(gè)數(shù)的加法運(yùn)算谦屑,并且把結(jié)果打印出來(lái),該怎樣設(shè)計(jì)篇梭?
案例:
? ??defadd2num():
????a=11
????b=22
????c=a+b
????print????c
2.3.1 位置參數(shù)
案例:
? ??deffun(a,b):
????????print("a:",a)
????????print("b:",b)
????fun(2,3)
2.3.2 關(guān)鍵字參數(shù)
案例:
? ??deffun(a,b):
????????print("a:",a)
????????print("b:",b)
????fun(a=2,b=3)
2.3.3:缺省參數(shù)
? ??在形參中默認(rèn)有值的參數(shù)氢橙,稱(chēng)之為缺省參數(shù)
案例:
? ??defprintinfo(name,age=20):
????????print("name:",name)
????????print("age:",age)
????printinfo(name="anfly")
????#name: anfly
????#age: 20
2.3.4 不定長(zhǎng)參數(shù)
? ??有時(shí)可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù), 這些參數(shù)叫做不定長(zhǎng)參數(shù),聲明時(shí)不會(huì)命名恬偷。
案例:
? ??def printinfo(*args):
????????print("args:",args)
????printinfo(100,200,300,400)
????#args: (100, 200, 300, 400)
2.3.5:參數(shù)位置順序
案例:
????? ??defsun(a,*args,b=22,**kwargs):
????????????print("a:",a)
????????????print("args:",args)
????????????print("b:",b)
????????????print("kwargs:",kwargs)
????sun(100,200,300,b=2,m=3,n=4)
2.4函數(shù)返回值
場(chǎng)景:?我給兒子10塊錢(qián)悍手,讓他給我買(mǎi)包煙。這個(gè)例子中,10塊錢(qián)是我給兒子的谓苟,就相當(dāng)于調(diào)用函數(shù)時(shí)傳遞到參數(shù)官脓,讓兒子買(mǎi)煙這個(gè)事情最終的目標(biāo)是,讓他把煙給你帶回來(lái)然后給你對(duì)么涝焙,卑笨,,此時(shí)煙就是返回值
代碼:
? ??defsum(a,b):
????????return a+b?
????sum(1,2)
2.4.1 多個(gè)retuen
2.4.2反悔多個(gè)數(shù)據(jù)
代碼:
? ??def divid(a, b):
????shang = a//b? #取模
????yushu = a%b????#取余
????return shang,yushu????#默認(rèn)是元組
????result = divid(5,2)
????print(result)
????# 輸出(2, 1)
2.5函數(shù)類(lèi)型
分類(lèi):
? ??1. 無(wú)參數(shù)仑撞,無(wú)返回值
????2. 無(wú)參數(shù)赤兴,有返回值
????3. 有參數(shù),無(wú)返回值
????4. 有參數(shù)隧哮,有返回值
2.6函數(shù)的嵌套
????一個(gè)函數(shù)里面又調(diào)用了另外一個(gè)函數(shù)桶良,這就是所謂的函數(shù)嵌套調(diào)用
案例:
? ??def testb():
????????print("testb start")
????????print("testb testb 執(zhí)行")
????????print("testb end")
????def testa():
????????print("testa start")
????????testb()
????????print("testa end")
2.7匿名函數(shù)
代碼:
? ??g = lambda x :x+1
????print(g(1))
3.變量
3.1局部變量
定義:
? ??局部變量,就是在函數(shù)內(nèi)部定義的變量
代碼:
? ??
3.2全局變量
定義:
? ??局部變量沮翔,就是在函數(shù)內(nèi)部定義的變量
代碼: