要想讓程序完成某項(xiàng)任務(wù),最基本的是了解如何使用程序語(yǔ)言自帶的數(shù)據(jù)類型和變量,然后通過(guò)運(yùn)算、比較、控制語(yǔ)句等等來(lái)達(dá)到我們的目的?,F(xiàn)在,我們將學(xué)習(xí)Python中常見(jiàn)的數(shù)據(jù)類型,以及變量是什么,以及如何使用它們。 數(shù)據(jù)類型Python中的數(shù)據(jù)類型包容: 數(shù)值型:包括整數(shù)(int),浮點(diǎn)數(shù)(float),布爾型(真或假,用True,False表示),復(fù)數(shù)(complex). 字符串(str):一段文字,要用單引號(hào)或引號(hào)括起來(lái)。 列表(list):把多個(gè)值放到一起的組合數(shù)據(jù)類型,用方括號(hào)[]括起來(lái),各個(gè)值之間以逗號(hào)隔開(kāi)。 字典(dict):”鍵:值“對(duì)組合的數(shù)據(jù)類型,鍵與值之間用冒號(hào)分開(kāi),不同鍵值對(duì)用逗號(hào)分割,所有鍵值對(duì)都放到大括號(hào){}中。 集合:是無(wú)序(沒(méi)有順序)的不重復(fù)元素組合類型。 元組(tuple):與列表類似,但元組是不可變的。 下面我們來(lái)實(shí)際操練一下。 首先打開(kāi)Thonny,在python腳本互動(dòng)區(qū)輸入下面的語(yǔ)句 i = 2type(1)12復(fù)制代碼類型:[python] 可以看到顯示<class'int'>,表示i是一個(gè)整數(shù)。在python中,i=2這個(gè)語(yǔ)句創(chuàng)建了一個(gè)變量,變量的名字叫做i,現(xiàn)在給i一個(gè)整數(shù)值2,i就表示整數(shù)類型的變量。 =與==的區(qū)別 “=”用來(lái)把一個(gè)對(duì)象賦給一個(gè)變量,而"=="用于比較兩個(gè)對(duì)象是否相等。 關(guān)于變量在Python中,變量名只能包括字母,數(shù)字和下劃線,不能以數(shù)字開(kāi)頭。同時(shí),也不能和Python已經(jīng)定義的關(guān)鍵字相同,比如def在python中用來(lái)創(chuàng)建函數(shù),就不能把變量名設(shè)置為def。Python變量名大小寫敏感,比如test與Test是兩個(gè)不同的變量。 與Java,C語(yǔ)言不同,在python中定義變量時(shí),不需要顯式指定變量類型。如在Java中要定義一個(gè)整數(shù)類型變量需要這樣: int i = 3 ; #必須在變量名前面加上類型int1復(fù)制代碼類型:[python] 在Python中則不需要如此,因?yàn)镻ython是動(dòng)態(tài)類型編程語(yǔ)言,變量名可以指向不同的對(duì)象(內(nèi)存中的位置),在程序運(yùn)行時(shí)才會(huì)根據(jù)它指向的對(duì)象來(lái)判斷是什么類型。可以嘗試一下這2行代碼 i = 56 # i指向的對(duì)象是整數(shù)類型,這個(gè)對(duì)象值是56i = 'hahaha' # 現(xiàn)在i指向了另一個(gè)str對(duì)象,他的值是hahaha12復(fù)制代碼類型:[python] 這可以通過(guò)打開(kāi)Thonny的堆棧(heap)來(lái)看,點(diǎn)擊菜單"View"--"Heap"打開(kāi)堆棧,然后運(yùn)行上面兩行代碼,在堆棧窗口可以看到下面的內(nèi)容: 堆棧窗口是個(gè)非常好的幫助我們理解變量與對(duì)象關(guān)系的地方,大家可以多在這練習(xí)和觀察。(堆棧就是程序使用的內(nèi)存區(qū)域) 數(shù)據(jù)類型演練數(shù)值型 一般我們用數(shù)值型來(lái)做運(yùn)算,Python支持非常豐富的運(yùn)算操作,除了常見(jiàn)的+、-、*(乘)、/(除)外,還有整數(shù)除//,求余數(shù)%,求冪**,以及math庫(kù)來(lái)實(shí)現(xiàn)更復(fù)雜的數(shù)學(xué)運(yùn)算。在腳本互動(dòng)區(qū),我們可以對(duì)數(shù)值型對(duì)象直接進(jìn)行運(yùn)算。 >>> 6+2 #整數(shù)相加8>>> 11-2 #整數(shù)減法9>>> 3*8 # 整數(shù)乘法24>>> 19/3 # 除法6.333333333333333>>> 19%3 # 求余數(shù)1>>> 19//3 # 整除6>>> 3.6+5 #浮點(diǎn)數(shù)相加,5會(huì)被自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù)5.0 8.61234567891011121314復(fù)制代碼類型:[python] 字符串 字符串可以用單引號(hào),或者雙引號(hào)來(lái)聲明。 s = 'i am str' # 正確用法,用單引號(hào)包裹s = "i am str" # 正確用法,用雙引號(hào)包裹s = "i am wrong' # 錯(cuò)誤!結(jié)尾也必須用雙引號(hào)才行123復(fù)制代碼類型:[python] 創(chuàng)建字符串時(shí),在單引號(hào)中可以嵌套雙引號(hào),反之亦然。 s= 'mama said "Do Not Touch".' # 這是正確的用法s = "mama said 'Do Not Touch'." # 這也是正確的用法12復(fù)制代碼類型:[python] 對(duì)字符串的一般操作包括求長(zhǎng)度、連接、索引、生成子字符串等。 >>> s = "mama said 'Do Not Touch'.">>> len(s) #求長(zhǎng)度25>>> s =s +"Oh." #字符串疊加>>> print(s) mama said 'Do Not Touch'.Oh.>>> s[0] #根據(jù)位置索引字符'm'>>> s[1]'a'>>> s[1:4] #得到子字符串'ama'123456789101112復(fù)制代碼類型:[python] 列表 列表和其他編程語(yǔ)言的數(shù)組非常類似。用[]來(lái)定義,列表中的元素可以是不同類型。 >>> list = [1,2,3,4,5] #全部是整數(shù)的列表>>> fl=[1,'ok',2,'good',7.8] #有整數(shù),字符串,浮點(diǎn)數(shù)元素的列表>>> print(list) [1, 2, 3, 4, 5]>>> print(fl) [1, 'ok', 2, 'good', 7.8]>>> list[0] #通過(guò)索引讀取列表元素,從0開(kāi)始1>>> len(list) #獲取列表的長(zhǎng)度5>>> list[4] #列表的最后一個(gè)元素,因?yàn)閺?開(kāi)始5>>> list[5] #所以不存在list[5],這是list的第6個(gè)元素,而它只有5個(gè)。Traceback (most recent call last): File "<pyshell>", line 1, in <module> IndexError: list index out of range #錯(cuò)誤提示:索引越界了>>> newl = list + fl # 2個(gè)列表合并得到一個(gè)新列表>>> print(newl) [1, 2, 3, 4, 5, 1, 'ok', 2, 'good', 7.8]12345678910111213141516171819復(fù)制代碼類型:[python] 與字符串一樣,列表也可以通過(guò)位置(索引)來(lái)讀取指定的元素,索引從0開(kāi)始,通過(guò)“列表名[索引]"方式讀取。因?yàn)樗饕龔?開(kāi)始,所以列表的最后一個(gè)元素應(yīng)該是在”長(zhǎng)度-1“的索引處,比如上面的list有5個(gè)元素,最后一個(gè)元素的索引是"5-1=4",而不是5。 列表的操作有很多,常見(jiàn)的如下,今后使用時(shí)再詳細(xì)解釋 append():在列表后面追加元素 insert():在列表中插入元素 pop():把指定的元素移出list clear():清除列表所有元素 sort():對(duì)列表進(jìn)行排序 字典 字典是”鍵值對(duì)“組合而成,日常生活中最常見(jiàn)的字典是學(xué)校里的學(xué)號(hào),每個(gè)學(xué)生都有一個(gè)學(xué)號(hào),來(lái)對(duì)應(yīng)這個(gè)學(xué)生,這里鍵就是學(xué)號(hào),值則是學(xué)生的名字。 >>> xuehao = {1:"張三", 2:"李四", 3:'王五'} #創(chuàng)建字典>>> xuehao[1] #通過(guò)鍵”1“讀取對(duì)應(yīng)數(shù)值'張三'>>> xuehao[3]'王五'>>> xuehao[4]="zhaoliu" #向字典添加新元素>>> print(xuehao) {1: '張三', 2: '李四', 3: '王五', 4: 'zhaoliu'}>>> xuehao.keys() #字典的所有鍵,這是一個(gè)列表dict_keys([1, 2, 3, 4])>>> xuehao.values() #字典的所有值,這也是一個(gè)列表dict_values(['張三', '李四', '王五', 'zhaoliu'])123456789101112復(fù)制代碼類型:[python] 針對(duì)字典的操作也很多,我們這里就先不深入了。 學(xué)以致用 讓我們做一個(gè)學(xué)號(hào)查詢工具,讓用戶輸入學(xué)號(hào),然后程序列出對(duì)應(yīng)的名字,我們先看使用字典的方式 #先創(chuàng)建字典xueshengdict = {1: '張三', 2: '李四', 3: '王五', 4: 'zhaoliu'}while True: xuehao = input("請(qǐng)輸入您的學(xué)號(hào): ") #讀取用戶輸入的學(xué)號(hào) i = int(xuehao) #讀入的學(xué)號(hào)是字符串,需要通過(guò)int()函數(shù)轉(zhuǎn)換為整數(shù),因?yàn)樽值涞膋ey是整數(shù) if i < len(xueshengdict): #判斷輸入的數(shù)字是否小于字典長(zhǎng)度 print(xueshengdict[i]) #顯示名字 else: #輸入數(shù)字大于或等于字典長(zhǎng)度時(shí),則顯示錯(cuò)誤信息并從循環(huán)退出,完成程序 print("wrong key, quit program!") break12345678910復(fù)制代碼類型:[python] 我們還可以通過(guò)列表來(lái)實(shí)現(xiàn),前提是學(xué)號(hào)從1開(kāi)始,并且是連續(xù)的,否則不能通過(guò)列表來(lái)實(shí)現(xiàn)。 #創(chuàng)建列表,默認(rèn)大家學(xué)號(hào)從1開(kāi)始,1,2,3,4這樣排下去xueshengdict = ['張三', '李四', '王五', 'zhaoliu']while True: xuehao = input("請(qǐng)輸入您的學(xué)號(hào):") i = int(xuehao) - 1 # 因?yàn)橥ㄟ^(guò)索引讀取學(xué)生姓名,所以學(xué)號(hào)減1得到索引位置 if i < len(xueshengdict): print(xueshengdict[i]) else: print("wrong key, quit program!") break |
|
來(lái)自: 碼農(nóng)9527 > 《Python》