生活随笔
收集整理的這篇文章主要介紹了
Python学习笔记(三) Python基础
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(二)python基礎(chǔ)
python基礎(chǔ)
自然語言與編程語言有所不同 ,自然語言可以在不同的情景下有不同的含義或解釋 , 但這是編程語言是堅決杜絕的 。 編程語言應(yīng)有的性能要求有:一致性 、 無二義性 、 簡潔性 、局部性 、 線性 。 python語言也不列外 。 python的 語法比較簡單 , 采用縮進的方式 。 如:
a=100;
if a>=0:print(a)
else:print(-a)
1. 以#開頭的是注釋
2. 每一行都是一個語句
2. 當(dāng)語句以:結(jié)尾時 , 縮進的語句視為一整個代碼塊(縮進有利有弊 1. 好處是強迫你寫出格式化美觀的代碼 , 但是在python中并沒有規(guī)定縮進是幾個空格還是tab , 一般約定俗成堅持使用四個空格的縮進 。2. 強迫你縮進更少的代碼 , 這樣你回吧傾向于更長的代碼拆分為若干個函數(shù) ,提高代碼復(fù)用性3. 壞處就是 , 當(dāng)你粘貼代碼的時候必須要重新檢查縮進是否正確 , 此時IDE也很難像格式化java代碼一樣格式化Python代碼 )
4. Python程序時大小寫敏感的語言
一、數(shù)據(jù)類型和變量 、常量
基本數(shù)據(jù)類型: 整數(shù): 在python中可以處理任意大小的整數(shù) ,包括負(fù)數(shù) , 在python語言中的表示方法和數(shù)學(xué)上的寫法一模一樣 浮點數(shù) 浮點數(shù)就是小數(shù) , 之所以叫浮點數(shù)是因為當(dāng)用 科學(xué)計數(shù)法表示一個小數(shù)小數(shù)點的位置不是固定的 ,而是浮動的 , 在Python中很大或很小的浮點數(shù)最好使用科學(xué)計數(shù)法表示 。 整數(shù)和浮點數(shù)在計算機中存儲的方式是不同的 。整數(shù)在計算機中存儲是永遠(yuǎn)是精確的 , 而浮點數(shù)只有很少一部分能精確存儲 。 字符串 字符串是以單引號或雙引號引起來的任意文本 布爾值 一個布爾值只有True 、 False兩種值 , 在python中可以直接用True 、 False表示布爾值(注意大寫) , 也可以通過布爾運算計算出來 。 布爾值也可以用 and 、 not 、 or 運算 空值 空值是Python中一個特殊的值 , 用None表示 , Nono不能理解為0 , 因為0是有意義的 , 而None是一個特殊的空值 。 變量: 變量名只能由字母 、 數(shù)字 、 下劃線組成 , 且不能用數(shù)字開頭 在Python中 = 是復(fù)制語句 , 可以把任意數(shù)據(jù)類型復(fù)制給變量 ,同一個變量可以反復(fù)復(fù)制 , 而且可以使不同類型的變量 。(這種變量類型本身不確定的語言稱之為動態(tài)語言 ) 當(dāng)執(zhí)行 a=’abc’ 時 , Python解釋器干了兩件事: 在內(nèi)存中創(chuàng)建了一個‘a(chǎn)bc’的字符串 在內(nèi)存中創(chuàng)建了一個名為a的變量 , 并把它指向‘a(chǎn)bc’ 常量: 常量就是不能變的變量 , 一般來說常量全部用大寫的變量名表示 , 如數(shù)學(xué)常數(shù)π在Python中使用PI表示 。 但事實上常量仍然是一個變量 , Python根本沒有任何機制保證PI不會被改變
二、 字符串和編碼
編碼 略 字符串
對于單個字符的編碼 , Python提供了ord()函數(shù)獲取字符的整數(shù)表示 , chr()函數(shù)把編碼轉(zhuǎn)換為對應(yīng)的字符 python的字符串類型是str , 在內(nèi)存中以Unicode表示 , 一個字符對應(yīng)若干個字節(jié) , 如果要在網(wǎng)絡(luò)上進行傳輸 , 或者保存在磁盤上 , 就需要把str保存為以字節(jié)為單位的bytes 。 python中bytes類型的數(shù)據(jù)用帶b前綴的單引號或雙引號表示
x=b'abc'
要注意bytes類型和str類型的數(shù)據(jù) , b’abc’ 和’abc’雖然內(nèi)容一致 , 但是bytes的數(shù)據(jù)每個字符只占一個字節(jié) 。 : encode() : 可以使用encode()方法把str類型的字符串通過指定編碼進行轉(zhuǎn)換 。當(dāng)指定的編碼無法表示對應(yīng)的字符時會報錯 。 decode() : 當(dāng)python代碼從磁盤讀取數(shù)據(jù)時 , 讀取到的是字節(jié)流, 如果想要獲取中文數(shù)據(jù) , 需要對字節(jié)流使用decode()進行解碼操作 。當(dāng)需要忽略字節(jié)流中錯誤的字節(jié)時 , 可以添加參數(shù)errors=‘ignore’ len(str):查看字符串包含多少個字符注意不是字節(jié)而是字符 len(bytes): 獲取字符串字節(jié)個數(shù) 在開發(fā)中如果需要中文與bytes轉(zhuǎn)換時 , 應(yīng)該堅持使用utf-8 , py源代碼本身也是一個文本文件 , 當(dāng)源代碼中包好中文時保存python源代碼應(yīng)該制定編碼為utf-8(windows下默認(rèn)gbk , linux下默認(rèn)utf-8) 。為了在python源碼執(zhí)行時解釋器解釋正確 , 因該在文件中開頭處加上 # -- coding:utf-8 -- 告訴解釋器解釋代碼時使用 utf-8編碼 。 格式化字符串: 如何輸出類似“親愛的xxx , 你xx月的話費是xxxx!”的字符串 , xxx中的內(nèi)容都是根據(jù)變量變化的 , 所以python提供了簡便的格式化字符的方式 。 在需要變量的位置放入占位符 , 在有參數(shù)時自動調(diào)用參數(shù)中對應(yīng)的內(nèi)容 。常見的占位符:
占位符替換內(nèi)容 %d 整數(shù) %f 浮點數(shù) %s 字符串 %x 十六進制數(shù)
其中格式化整數(shù)和浮點式還可以指定是否補0和整數(shù)與小數(shù)的位數(shù)
當(dāng)字符串中包含%時 , %需要轉(zhuǎn)義 ,用%%表示% 。 format() : 另一種格式化字符串的方法 , 他會將傳入的字符串依次的替換字符串內(nèi)的占位符
三 、 list和tuple
list: 列表list是python內(nèi)置的一種數(shù)據(jù)類型 。 list是一種有序的集合 , 可以隨時添加和刪除其中的元素 。
可以用索引來訪問list中的元素 。 當(dāng)索引為正整數(shù)時 , 索引從0開始 。當(dāng)索引為負(fù)整數(shù)時, 索引從-1開始 。 當(dāng)索引超出list的長度時 , 會報錯索引越界 。 list是一個可變的有序列表 添加元素到末尾 添加元素到指定位置 獲取并刪除末尾元素 獲取并刪除指定位置元素 list中的元素數(shù)據(jù)類型可以不同 tuple: 另一種序列表叫元祖 。 tuple與list非常相似 。 但是tuple一旦初始化就不能修改 。只能獲取其中的元素而不能刪除或修改 。
因為tuple是不可變的 , 所以代碼更加安全 , 在能用tuple時盡量使用tuple 。 但是tuple由于是不可變的 ,所以在定義tuple時 , 其中的所有元素就應(yīng)該確定下來 list用[]來表示 , tuple用()表示 。 tuple中即使只有一個元素時 , 也必須加上逗號 ,避免與計算時的()混淆 。
四 、 條件判斷
之所以可以做很多自動化任務(wù) , 就是因為他可以自動根據(jù)情景做條件判斷 。 根據(jù)python的縮進規(guī)則 , 相同的連續(xù)的縮進視為同一個代碼塊 。
# -*- coding:utf-8 -*-
# 使用input獲取到的內(nèi)容都為Str類型 需要轉(zhuǎn)換后才能使用運算符運算
age =int(input("請輸入你的年齡:"))
if age>18 :print("你是成年人!")
elif age>15 :print("你是青少年!")
else: print("你是兒童!")input("輸入任意字符退出!")
python中if判斷天劍還可以簡寫 , 直接判斷自動推斷數(shù)據(jù)類型 , 然后自動判斷整數(shù)或浮點數(shù)是否為0 , 字符串是否為空 ,list是否為空 。 如果是則運算結(jié)果為Ture , 否則為False 。
五 、 循環(huán)
python中提供 兩種循環(huán): for-in 和while循環(huán) 。
for循環(huán) :
# -*- conding : utf-8 -*-
#python中循環(huán)#循環(huán)輸出名字
names = ['韓梅梅' , '李雷雷' , '小明明']
for name in names :print(name)#循環(huán)輸出有序數(shù)字
list = [1,2,3,4,5,6,7,8,9]
for l in list :print(l) # 但是如果想要輸出1~10000的有序數(shù)字 , 難道需要提前定義1~10000的list么list2=range(10001) # range()函數(shù)用于生成0到指定數(shù)字的有序list
for l in list2:print(l)
while循環(huán):
#while 循環(huán)
# 求0到100的和sum = 0
n = 100
while n>0 :sum =sum +nn = n - 1
print("0到100的整數(shù)和為:" ,sum)
break 與 continue 在循環(huán)中可以使用break提前結(jié)束循環(huán) , 一般需要配合if使用 。 在循環(huán)中可以使用continue結(jié)束本輪循環(huán) , 之后繼續(xù)進行下一輪循環(huán) 。
六 、 dict和set
dict : python中內(nèi)置了dict的支持 , dict全程dictionary , 在其他語言中也稱為map , 使用鍵值對存儲 , 有著極快的查找速度 。 (原因: dict有自己的索引表 , 不會隨著元素的增多而導(dǎo)致查詢速度變慢) 在dict中 一個key只能對應(yīng)一個value ,在key一樣的情況下 后進的value會把之前的value覆蓋。 在修改value時如果value不存在 , 則會報錯 。為了避免key不存在的錯誤 , 可以事先通過in判斷key在dict中是否存在 。 也可以通過get()函數(shù)判斷key是否存在 ,如果不存在則返回none 或返回自己制定的缺省值。 (在python的交互環(huán)境中測試時 如果結(jié)果為None , 則不會有任何顯示 。 ) dict和list相比: dict可以存儲鍵值對格式的數(shù)據(jù) 。 dict的查詢速度非常快 , 不會隨元素增多而變慢 dict占用的內(nèi)存空間較大 , 內(nèi)存浪費多 dict總結(jié): dict可以 =用在需要鈣素查詢多的地方 , 在python代碼中幾乎無處不在 ,需要注意的是dict中元素的key必須是不可變對象 。 這是因為dict需要根據(jù)key來計算value的存儲位置 , 如果每計算的位置都不一樣那就完全混亂了 。 在python中字符串 、 整數(shù)都是不可變的 , 因此可以放心的用作key 。 set : set中存儲的元素格式與list類似, 但是存儲的元素的位置和存儲的順序無關(guān), 且set內(nèi)存儲的元素是不可以重復(fù)的 。
add() : 通過add()函數(shù)將元素添加到set中 。 remove() : 通過remove()函數(shù)將元素從set 中移除 。 在數(shù)學(xué)的概念上 set是一個無序不重復(fù)的元素的集合 , 所以可以對set進行交集、 并集運算 。
set總結(jié): set和dict 的唯一區(qū)別就是dict存儲的元素是鍵值對形式的 ,而set只存儲了key , set和dict中的key都是不可重復(fù)的 , 存儲順序相對于存入順序來說都是無序的 , 且set和dict的原理是一樣的 , 同樣不可以存儲可變元素 , 因為無法判斷兩個元素是否相等 , 也就無法保證set中不會有重復(fù)元素 。(在python中str和整數(shù)是不可變元素 )
總結(jié)
以上是生活随笔 為你收集整理的Python学习笔记(三) Python基础 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。