python-day1
目錄:
- python簡(jiǎn)介
- python安裝與執(zhí)行
- pycharm簡(jiǎn)單設(shè)置及使用
- 注釋使用及.pyc文件
- python變量
- python用戶交互(輸入輸出)
- if條件語(yǔ)句
- 循環(huán)語(yǔ)句(while & for)
- 運(yùn)算符
- python數(shù)據(jù)類型初識(shí)(int,bool,str,list,dict)
?
一、python簡(jiǎn)介:
python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,吉多·范羅蘇姆為了在阿姆斯特丹打發(fā)時(shí)間,決心開發(fā)一個(gè)新的腳本解釋程序,作為ABC語(yǔ)言的一種繼承。
python的目前應(yīng)用領(lǐng)域:數(shù)據(jù)分析、組件集成、網(wǎng)絡(luò)服務(wù)、圖像處理、數(shù)值計(jì)算和科學(xué)計(jì)算等眾多領(lǐng)域
python的目前公司常用領(lǐng)域:自動(dòng)化運(yùn)維、自動(dòng)化測(cè)試、大數(shù)據(jù)分析、爬蟲、Web 等。
使用python的公司:Youtube、Dropbox、BT、Quora(中國(guó)知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團(tuán)等
ps:有上可知,python正越來(lái)越受到程序員們的廣泛認(rèn)可,那python的優(yōu)勢(shì)在哪里呢?
?
1、python和其他語(yǔ)言對(duì)比:
a.C 和 Python、GO、Java、C#等
C語(yǔ)言: 代碼編譯得到 機(jī)器碼 ,機(jī)器碼在處理器上直接執(zhí)行,每一條指令控制CPU工作
其他語(yǔ)言: 代碼編譯得到 字節(jié)碼 ,虛擬機(jī)執(zhí)行字節(jié)碼并轉(zhuǎn)換成機(jī)器碼再后在處理器上執(zhí)行
b.Python 和 C ?Python這門語(yǔ)言是由C開發(fā)而來(lái)
對(duì)于使用:Python的類庫(kù)齊全并且使用簡(jiǎn)潔,如果要實(shí)現(xiàn)同樣的功能,Python 10行代碼可以解決,C可能就需要100行甚至更多.
對(duì)于速度:Python的運(yùn)行速度相較與C,絕逼是慢了
c.python和GO語(yǔ)言
對(duì)于使用:Go語(yǔ)言是未來(lái)的語(yǔ)言,它屬于編譯型(有關(guān)解釋型語(yǔ)言和編譯型語(yǔ)言解釋,注1)語(yǔ)言,作為新型的語(yǔ)言,網(wǎng)絡(luò)傳輸方面目前所有語(yǔ)言第一,就是語(yǔ)法基礎(chǔ)等方面還有待于完善。
對(duì)于速度:?與C相當(dāng),很牛逼的語(yǔ)言,身為小白的我,坐等它的成熟。
d.Python 和 Java、C#等
對(duì)于使用:Linux原裝Python,其他語(yǔ)言沒(méi)有;以上幾門語(yǔ)言都有非常豐富的類庫(kù)支持
對(duì)于速度:Python在速度上可能稍顯遜色
ps.所以,Python和其他語(yǔ)言沒(méi)有什么本質(zhì)區(qū)別,其他區(qū)別在于:擅長(zhǎng)某領(lǐng)域、人才豐富、先入為主。
?
2、python的種類:
a.CPython:
Python的官方版本,使用C語(yǔ)言實(shí)現(xiàn),使用最為廣泛,CPython實(shí)現(xiàn)會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。目前我們建議使用3.5版本。
解釋器:CPython。為C語(yǔ)言開發(fā)
運(yùn)行方式:命令行下使用python命令直接運(yùn)行。
b.pypy:
Python實(shí)現(xiàn)的Python,pypy采用JIT技術(shù),將Python的字節(jié)碼字節(jié)碼再編譯成機(jī)器碼。其目的就是一次編譯所有py變?yōu)閜yc,直接調(diào)用加快程序調(diào)用速度。
解釋器:pypy。
運(yùn)行方式:命令行下使用pypy命令運(yùn)行
c.其他Python:
-
- Jyhton:
Jython是運(yùn)行在java平臺(tái)上的python解釋器,可以直接把python代碼編譯成java字節(jié)碼執(zhí)行。
- IronPython:
IronPython和Jython類似,只不過(guò)IronPython是運(yùn)行在微軟.net平臺(tái)上的python解釋器。可以直接把python代碼編譯成.net字節(jié)碼執(zhí)行。
- Jyhton:
-
- RubyPython、Brython ..?
ps.所以目前python對(duì)于所有主流語(yǔ)言都有很好的兼容,雖然如此,如果要和java或.net等平臺(tái)交互,最好的方式還是通過(guò)網(wǎng)絡(luò)調(diào)用交互,以此確保各各程序之間的獨(dú)立性。
ps.PyPy,在Python的基礎(chǔ)上對(duì)Python的字節(jié)碼進(jìn)一步處理,從而提升執(zhí)行速度!
?
二、 python安裝與執(zhí)行
前面說(shuō)了這么多,下面開始正式學(xué)習(xí)python了。
1、安裝:
1、下載安裝包
https://www.python.org/downloads/
2、安裝
默認(rèn)安裝路徑:C:\python27
3、配置環(huán)境變量
【右鍵計(jì)算機(jī)】--》【屬性】--》【高級(jí)系統(tǒng)設(shè)置】--》【高級(jí)】--》【環(huán)境變量】--》【在第二個(gè)內(nèi)容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來(lái)的值;C:\python27,切記前面有分號(hào)
2.linux安裝
查看默認(rèn)Python版本
python -V
1、安裝gcc,用于編譯Python源碼
yum install gcc
2、下載源碼包,https://www.python.org/ftp/python/
3、解壓并進(jìn)入源碼文件
4、編譯安裝
./configure
make all
make install
5、查看版本
/usr/local/bin/python2.7 -V
6、修改默認(rèn)Python版本
mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
7、防止yum執(zhí)行異常,修改yum使用的Python版本
vi /usr/bin/yum
將頭部 #!/usr/bin/python 修改為 #!/usr/bin/python2.6
2、Hello world!程序
? a.創(chuàng)建helloworld.py文件(pyhton程序,一般為.py結(jié)尾)
#!/usr/bin/env python
#解釋器調(diào)用路徑
# -*- coding:utf-8 -*-
#聲明解釋器編碼
#程序執(zhí)行
print('hello world!')
?b.執(zhí)行方式
-
- windows
- "D:\Program Files\Python35\python.exe" ?helloword.py ? #直接文件執(zhí)行(以后運(yùn)行程序多為此方式)
- "D:\Program Files\Python35\python.exe" ?#進(jìn)入解釋器執(zhí)行print('helloword!')
- linux ?
- python helloword.py ? #直接文件執(zhí)行(以后運(yùn)行程序多為此方式)
- ptyhon ? ? ? ? ? ? #進(jìn)入解釋器執(zhí)行print('helloword!')
- windows
ps.文件頭部要加#!/user/bin/evn python及chmod +x helloword.py
然后./helloword.py實(shí)行。
3、編碼格式(作用:聲明編碼格式)
可以讓計(jì)算機(jī)直接認(rèn)識(shí)的語(yǔ)言,其實(shí)只有匯編語(yǔ)言,即0和1的代碼。且計(jì)算機(jī)是美國(guó)人發(fā)明的,因此,最早只有英文加特殊字符共127位字母與0和1代碼進(jìn)行一一對(duì)應(yīng)。而美國(guó)人覺得夠用了2^7 = 128不夠他們擴(kuò)展的,所以采用2^8 =256的內(nèi)存空間(單位為‘字節(jié)’, 即256字節(jié)),夠美國(guó)人用的了。
這就是最早的編碼ASCII碼。顯然,256位字符不夠中文用的,中國(guó)人也想用,怎么辦呢?顯然聰明的中國(guó)人想到了辦法,通過(guò)在做一張新的表并把新表通過(guò)取ASCII碼的幾位映射到ASCII碼中使用。這就是GBK。有21003字符,2字節(jié)一個(gè)漢字。
全世界人民都想使用電腦,于是個(gè)個(gè)國(guó)家的編碼應(yīng)運(yùn)而生,日本shift_JTS,韓國(guó)EUC-kr等等。中國(guó)身為共產(chǎn)主義多民族國(guó)家,不能只搞漢語(yǔ)啊,體現(xiàn)民族平等嘛,于是把滿文,回文等等的文字也寫了新的編碼GB2312.有27484字,2字節(jié)一個(gè)漢字
? ?國(guó)際標(biāo)準(zhǔn)組織一看,世界居然為了編碼亂搞,沖突不斷,亂碼叢生。因此unicode誕生了,把所有語(yǔ)言統(tǒng)一到一個(gè)字符編碼中,unicode也因此被稱為萬(wàn)國(guó)碼。最少用2個(gè)字節(jié)表示1個(gè)字符。
? ?這時(shí),美國(guó)不干了,為什么我建立的計(jì)算機(jī),被你們亂改一通,最后我一個(gè)字符搞定的事,被你們改成了2個(gè)字符,我本來(lái)存100MB的東西,莫名其妙變成了200MB。不行,于是utf-8誕生了,utf-8是對(duì)uniccode的優(yōu)化壓縮。英文字符占1個(gè)字符,歐洲字符占2個(gè)字符,中文占3個(gè)字符……, 故utf-8又稱可變字符編碼。
ps.字符編碼總結(jié):
| 編碼名 | 占用字節(jié)(1中文字符) | python版本(默認(rèn)) |
| ASCII | 沒(méi)有中文 | python2 |
| GBK | 2個(gè)字節(jié) | 無(wú) |
| unciode | 3個(gè)字節(jié) | 無(wú) |
| utf-8 | 3個(gè)字節(jié) | python3 |
ps.二進(jìn)制換算:
-
- 最小計(jì)算機(jī)表示單位為bit(位)
- 8bit = 1byte(字節(jié),最小存儲(chǔ)字節(jié))
- 1024byte = 1MB(兆) ?MB--〉GB--〉TB --〉PB
三、pycharm簡(jiǎn)單設(shè)置及使用
? 1、使用:
a、創(chuàng)建項(xiàng)目:file ---> new project
b、新建文件夾:右擊要?jiǎng)?chuàng)建文件夾的項(xiàng)目或上級(jí)目錄?----〉new ---〉directory?
c、新建文件:右擊要?jiǎng)?chuàng)建文件夾的項(xiàng)目或上級(jí)目錄?----〉new ---〉file
d、運(yùn)行文件:要執(zhí)行的.py文件內(nèi)容---〉右擊---〉run xx.py
?2、文件編碼:
file ---->default settings --->editor --->file encodings
?3、程序文件模版:
file ---->default settings --->editor --->file and code templates?
?4、改變字體大小:
file ----〉settings ----〉editor ---> General ---〉mouse
四、注釋使用及.pyc文件
1、python文件注釋:
# 單行注釋
''' '''' 多行注釋
? ? ?2、.pyc文件:
.pyc文件存儲(chǔ)的是介于0101計(jì)算機(jī)語(yǔ)言和我們寫的文件之間的語(yǔ)言。是有python解釋器根據(jù)我們編寫的代碼自動(dòng)生成的文件。具體可查看, 注1
五、python變量(初識(shí))
1、變量命名規(guī)則:
a.字母
b.數(shù)字(不能開頭)
c.下劃線
? ps.硬性規(guī)定,命名必須是字母,數(shù)字,下劃線,且不能以數(shù)字開頭。
軟性規(guī)則,以下劃線分割
2、實(shí)例:
a.寫法: age_of_oldboy = 60
b.命名潛規(guī)則:age_of_oldboy 普通變量
Age_of_oldboy ?首字母大寫,一般為類
AGE_OF_OLDBOY 一般為常量寫法
六、python用戶交互(輸入輸出):
1、輸入
v = input('>>>')?
import getpass
v = input('>>>')
2、輸出
print('input', v)
3、實(shí)例:
'''
輸入,輸出
'''
#輸入終端隱藏,pycharm不好使
import getpass
#正常輸入,顯示
name = input('name:')
password = getpass.getpass('password:')
age = 18
#正常輸出
print(name, password, age)
七、if條件語(yǔ)句
1、if...else...結(jié)構(gòu)
a.含義:
if 條件:
條件成功,執(zhí)行
else:
條件失敗,執(zhí)行
b.實(shí)例:
#!/usr/bin/python#-*- coding:utf-8 -*-
## 用戶登陸(三次機(jī)會(huì)重試)
user="tianyou.zhu"
password="tianyou123"
for i in range(3):
user_input= input("請(qǐng)輸入你的名字:")
pass_input=input("請(qǐng)輸入你的密碼:")
if user_input ==user and pass_input==password:
print ("登陸成功")
break
else:
print ("登陸失敗,請(qǐng)重新輸入")
2、if ...elif ... else ...結(jié)構(gòu)
a.含義:
if 條件:
if條件成功,執(zhí)行
elif 條件:
elif條件成功,執(zhí)行
elif 條件:
elif條件成功,執(zhí)行
....
else:
上述條件都失敗,執(zhí)行
b.實(shí)例:
username = input('>>>')
if username == 'tianyou.zhu':
print('普通管理')
elif username == 'a':
print('超級(jí)管理')
elif username == 'b':
print('人')
elif username == 'c':
print('裝逼犯')
else:
print('再見...')
print('end')
八、循環(huán)語(yǔ)句(while & for)
1、while循環(huán)
a.結(jié)構(gòu)
while 條件:
continue #立即執(zhí)行下一個(gè)循環(huán)
break ?#跳出當(dāng)前while的所有循環(huán)
else: #while條件不成立執(zhí)行
b.實(shí)例1:1,2,3,4,5,6, 8, 9, 10 打印
#!/usr/bin/python#-*- coding:utf-8 -*-
#1、使用while循環(huán)輸入 1 2 3 4 5 6 8 9 10
#i=1
#while True:
# if i ==7:
# i=i+1
# continue
# print (i)
# i= i +1
# if i == 11:
# break
for i in range(11):
if i==7:
continue
print (i)
c.實(shí)例2:while 計(jì)算1到100的和 #!/usr/bin/python
#-*- coding:utf-8 -*-
#求1-100的所有數(shù)的和
val = 0
i=1
while i<101:
val = val+i
i= i +1
print (val)
a = 0
b = 1
for i in range(100):
a =a+b
b=b+1
print (a)
d.實(shí)例3:求1-2+3-4+5 ... 99的所有數(shù)的和 #!/usr/bin/python
#-*- coding:utf-8 -*-
#5、求1-2+3-4+5 ... 99的所有數(shù)的和
#value = 0
#i = 1
#while i<100:
# if i % 2 == 1:
# # value = value + i
# value += i
# else:
# # value = value - i
# value -= i
# i += 1 # i = i + 1
#print(value)
e.實(shí)例4:用戶登陸(三次機(jī)會(huì)重試) #!/usr/bin/python
#-*- coding:utf-8 -*-
## 用戶登陸(三次機(jī)會(huì)重試)
user="tianyou.zhu"
password="tianyou123"
for i in range(3):
user_input= input("請(qǐng)輸入你的名字:")
pass_input=input("請(qǐng)輸入你的密碼:")
if user_input ==user and pass_input==password:
print ("登陸成功")
break
else:
print ("登陸失敗,請(qǐng)重新輸入")
九、運(yùn)算符
? 1、算術(shù)運(yùn)算符:
2、比較運(yùn)算:
3、賦值運(yùn)算:
4、邏輯運(yùn)算:
5、成員運(yùn)算:
6、身份運(yùn)算:
7、位運(yùn)算:
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "Line 1 - Value of c is ", c
c = a | b; # 61 = 0011 1101
print "Line 2 - Value of c is ", c
c = a ^ b; # 49 = 0011 0001 #相同為0,不同為1
print "Line 3 - Value of c is ", c
c = ~a; # -61 = 1100 0011
print "Line 4 - Value of c is ", c
c = a << 2; # 240 = 1111 0000
print "Line 5 - Value of c is ", c
c = a >> 2; # 15 = 0000 1111
print "Line 6 - Value of c is ", c
補(bǔ)充要點(diǎn):
a. i += 1 等同于 i = i + 1。同理*= -= 等賦值運(yùn)算符都為該系列。
b.?邏輯運(yùn)算,從左往右一個(gè)一個(gè)看,先算()內(nèi)的數(shù)值。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
邏輯運(yùn)算
'''
#1正確
if 1 == 1 or 1 > 2 and 1 == 4:
print('正確')
else:
print('錯(cuò)誤')
#2錯(cuò)誤
if 1 == 1 and 1 > 2 or 1 == 4:
print('正確')
else:
print('錯(cuò)誤')
#3錯(cuò)誤
if 1 == 0 and 1 > 2 or 1 == 4:
print('正確')
else:
print('錯(cuò)誤')
#4錯(cuò)誤
if 1 == 0 and (1 < 2 or 1 == 4):
print('正確')
else:
print('錯(cuò)誤')
#5錯(cuò)誤
if 1 == 0 and 1 > 2 or 1 == 4:
print('正確')
else:
print('錯(cuò)誤')
c.成員運(yùn)算
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
成員運(yùn)算符
'''
content = "Alex 前幾天去泰國(guó)玩姑娘,一不小心染上了病,他的內(nèi)心活動(dòng)是,真該多來(lái)幾個(gè)"
if "前幾天去" in content:
print('包含敏感字符')
else:
print(content)
十、python數(shù)據(jù)類型初識(shí)(int,bool,str,list,dict)
type()查看變量類型。
1、int(整形)
a.創(chuàng)建
b.轉(zhuǎn)換
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
int(整形)
a.創(chuàng)建
b.轉(zhuǎn)換
'''
#創(chuàng)建
age = 19
age1 = int(19)
print(age,age1)
#轉(zhuǎn)換
age2 = '19'
print(type(age2))
#isdigit()判斷是否是一個(gè)數(shù)字,int()只能轉(zhuǎn)數(shù)字,不能轉(zhuǎn)字母、中文等。會(huì)報(bào)錯(cuò)
if age2.isdigit(age2):
int(age2)
print(('tpye:%s age2:%d') % (type(age2), age2))
?
2、bool(布爾值)
a.創(chuàng)建
b.轉(zhuǎn)換
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
bool(布爾值)
a.創(chuàng)建
b.轉(zhuǎn)換
'''
#創(chuàng)建
a = True
b = False
#轉(zhuǎn)換
#數(shù)字轉(zhuǎn)換,只有0是False,其他True
#字符串, 只有""是False,其他True
#其他,待續(xù)……
a1 = 0
a2 = 100
a3 = -100
a1_bool = bool(a1)
a2_bool = bool(a2)
a3_bool = bool(a3)
print('a1 %s:%s bool_type:%s'%(a1,a1_bool, type(a1_bool)))
print('a2 %s:%s bool_type:%s'%(a2,a2_bool, type(a1_bool)))
print('a3 %s:%s bool_type:%s'%(a3,a2_bool, type(a1_bool)))
b1 = ''
b2 = 'fafa'
b3 = 'AFSD@'
b1_bool = bool(b1)
b2_bool = bool(b2)
b3_bool = bool(b3)
print('b1 %s:%s bool_type:%s'%(b1,b1_bool, type(a1_bool)))
print('b2 %s:%s bool_type:%s'%(b2,b2_bool, type(a1_bool)))
print('b3 %s:%s bool_type:%s'%(b3,b3_bool, type(a1_bool)))
'''
結(jié)果:
a1 0:False bool_type:<class 'bool'>
a2 100:True bool_type:<class 'bool'>
a3 -100:True bool_type:<class 'bool'>
b1 :False bool_type:<class 'bool'>
b2 fafa:True bool_type:<class 'bool'>
b3 AFSD@:True bool_type:<class 'bool'>
'''
?
3、str(字符串)
a.創(chuàng)建
b.轉(zhuǎn)換
c.拼接
d.格式化
e.是否在子序列中
f.移除空白.strip()
g.分割.split('分割符',步長(zhǎng))
h.長(zhǎng)度len()
i.索引[]
j.切片[開始:結(jié)束:步長(zhǎng)]
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
str(字符串)
a.創(chuàng)建 b.轉(zhuǎn)換 c.拼接 d.格式化 e.是否在子序列中 f.移除空白
g.分割 h.長(zhǎng)度 i.索引 j.切片
'''
#創(chuàng)建
name = 'tianyou.zhu'
name1 = str('tianyou.zhu')
print('name: %s tpye:%s \n name1:%s tpye:%s\n' %(name,type(name),name1,type(name1)))
#轉(zhuǎn)換
age = 19
age_str = str(age)
print('age_str:%s tpye:%s' % (age, age_str))
#字符串拼接
name2 = 'alex'
gender = '女'
new_str = name2 + gender
print(new_str)
#字符串格式化,使用占位符%s(待續(xù)...)
name3 = '我叫李杰,性別:%s,我今年%s歲,我在說(shuō)謊!'
new_str2 = name3 %('男',19,)
print(new_str2)
name4 = '我叫李杰,性別:%s,我今年%s歲,我在說(shuō)謊!' %('男',19)
print(name4)
#判斷子序列是否在其中
content = "Alex 前幾天去泰國(guó)玩姑娘,一不小心染上了病,他的內(nèi)心活動(dòng)是,真該多來(lái)幾個(gè)"
if "前幾天去" in content:
print('包含敏感字符')
else:
print(content)
#移除空白
val = " alex "
print(val)
new_val = val.strip() # 左右去
# new_val = val.lstrip()# 左邊去
# new_val = val.rstrip() # 右邊去
print(new_val)
#分割.split('分隔符',步長(zhǎng))
user_info = "alex|sb123|9"
v = user_info.split('|')
# v = user_info.split('|',1)
# v = user_info.rsplit('|',1) #右分割
# v = user_info.lsplit('|',1) #左分割
print(v)
#長(zhǎng)度(字符)python2,中文按2字節(jié)算,python按,中文按1字符算
val = "李杰nb"
v = len(val)
print(v)
'''
結(jié)果:
4
'''
#索引
val = "李杰mb"
v = val[0]
print(v)
val = input('>>>')
i = 0
while i < len(val):
print(val[i])
i += 1
'''
輸入:dd
結(jié)果:
d
d
'''
#切片
name = '我叫李杰,性別我今年歲,我在說(shuō)謊!'
print(name[0])
print(name[0:2])
print(name[3:9])
print(name[7:])
print(name[4:-2])
print(name[-2:])
'''
結(jié)果:
我
我叫
杰,性別我今
我今年歲,我在說(shuō)謊!
,性別我今年歲,我在說(shuō)
謊!
'''
4、list(列表)
a.創(chuàng)建
b.in判斷
c.索引[]
d.追加.append()
e.插入.insert()
f.刪除del .remove()
g.更新
h.輸出
i.長(zhǎng)度len()
j.切片[開始:結(jié)束:步長(zhǎng)]
創(chuàng)建:
a = ['alex','狗','eric',123]
a = list(['alex','狗','eric',123])
in判斷:
if 'al' in a:
pass
if 'al' in a[0]:
pass
索引:
val = a[0]
長(zhǎng)度:
val = len(a)
切片:
a = ['alex','狗','eric',123]
v = a[0::2]
print(v)
追加:
a = ['alex','狗','eric',123]
a.append('xxoo')
print(a)
插入:
a = ['alex','狗','eric',123]
a.insert(0,'牛')
print(a)
刪除:
a = ['alex','eric','狗','eric',123]
# a.remove('eric')
del a[0]
print(a)
更新:
a = ['alex','eric','狗','eric',123]
a[1] = '阿斯頓發(fā)送到'
print(a)
For循環(huán):
a = ['alex','eric','狗','eric',123]
for item in a:
print(item)
# break
# continue
5、dict(字典)
a.創(chuàng)建
b.索引
c.增加&更新
d.刪除
e.輸出
- 創(chuàng)建
v = {
'name': 'alex',
'password': '123123'
}
# 常用操作
# 索引獲取值
# n = v['name']
# print(n)
# 增加,無(wú),增加;有,修改
# v['age'] = 19
# print(v)
# 刪除
# del v['name']
# print(v)
# 循環(huán)
# for item in v.keys():
# print(item)
# for item in v.values():
# print(item)
# for key,val in v.items():
# print(key,val)
print(len(user_dict))
PS: 相互嵌套
user_dict = {
'k1': 'v1',
'k2': {'kk1':'vv1','kk2':'vv2'},
'k3': 123,
'k4': ['alex','eric',['a','b','c'],'李杰',{'k11':'vv1'}],
}
user_dict['k4'][2].append('123')
user_dict['k4'][4]['n'] = '過(guò)啥龍'
應(yīng)用:
user_list = [
{'name':'alex','pwd':'123123','times':1},
{'name':'eric','pwd':'123123','times':1},
{'name':'tony','pwd':'123123','times':1},
]
user = input('用戶名:')
pwd = input('密碼:')
for item in user_list:
if user == item['name'] and pwd == item['pwd']:
print('登錄成功')
break
list & dict嵌套
a.實(shí)例1:相互嵌套
#!/usr/bin/env python2 # -*- coding:utf-8 -*-3 4 5 '''6 dict&list相互嵌套實(shí)例17 '''8 9 user_dict = { 10 'k1': 'v1', 11 'k2':{'kk1':'vv1', 'kk2':'vv2'}, 12 'k3':123, 13 'k4':[ 'jack', ['a', 'b', 'c'], '李杰',{'k1':'v1'}] 14 } 15 print('dict: %s' % user_dict) 16 17 #添加dict --〉 list的元素 18 user_dict['k4'][2].append('123') 19 print('add_dict_list: %s' % user_dict) 20 21 #添加dict ---〉 dict的元素 22 user_dict['k4'][4]['k2'] = 'v1' 23 print('add_dict_dict: %s' % user_dict)
b.實(shí)例2:多用戶密碼登陸
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
dict_list多用戶登陸
'''
user_list = [
{'name':'alex','pwd':'123123','times':1},
{'name':'eric','pwd':'123123','times':1},
]
user = input('用戶名:')
pwd = input('密碼:')
for item in user_list:
if user == item['name'] and pwd == item['pwd']:
print('登錄成功')
1、注解1:
a.?解釋型語(yǔ)言和編譯型語(yǔ)言
?計(jì)算機(jī)是不能夠識(shí)別高級(jí)語(yǔ)言的,所以當(dāng)我們運(yùn)行一個(gè)高級(jí)語(yǔ)言程序的時(shí)候,就需要一個(gè)“翻譯機(jī)”來(lái)從事把高級(jí)語(yǔ)言轉(zhuǎn)變成計(jì)算機(jī)能讀懂的機(jī)器語(yǔ)言的過(guò)程。這個(gè)過(guò)程分成兩類,第一種是編譯,第二種是解釋。
編譯型語(yǔ)言在程序執(zhí)行之前,先會(huì)通過(guò)編譯器對(duì)程序執(zhí)行一個(gè)編譯的過(guò)程,把程序轉(zhuǎn)變成機(jī)器語(yǔ)言。運(yùn)行時(shí)就不需要翻譯,而直接執(zhí)行就可以了。最典型的例子就是C語(yǔ)言。
解釋型語(yǔ)言就沒(méi)有這個(gè)編譯的過(guò)程,而是在程序運(yùn)行的時(shí)候,通過(guò)解釋器對(duì)程序逐行作出解釋,然后直接運(yùn)行,最典型的例子是Ruby。
?通過(guò)以上的例子,我們可以來(lái)總結(jié)一下解釋型語(yǔ)言和編譯型語(yǔ)言的優(yōu)缺點(diǎn),因?yàn)榫幾g型語(yǔ)言在程序運(yùn)行之前就已經(jīng)對(duì)程序做出了“翻譯”,所以在運(yùn)行時(shí)就少掉了“翻譯”的過(guò)程,所以效率比較高。但是我們也不能一概而論,一些解釋型語(yǔ)言也可以通過(guò)解釋器的優(yōu)化來(lái)在對(duì)程序做出翻譯時(shí)對(duì)整個(gè)程序做出優(yōu)化,從而在效率上超過(guò)編譯型語(yǔ)言。
此外,隨著Java等基于虛擬機(jī)的語(yǔ)言的興起,我們又不能把語(yǔ)言純粹地分成解釋型和編譯型這兩種。
用Java來(lái)舉例,Java首先是通過(guò)編譯器編譯成字節(jié)碼文件,然后在運(yùn)行時(shí)通過(guò)解釋器給解釋成機(jī)器文件。所以我們說(shuō)Java是一種先編譯后解釋的語(yǔ)言。
b.圖例:
c.編譯型vs解釋型
編譯型
優(yōu)點(diǎn):編譯器一般會(huì)有預(yù)編譯的過(guò)程對(duì)代碼進(jìn)行優(yōu)化。因?yàn)榫幾g只做一次,運(yùn)行時(shí)不需要編譯,所以編譯型語(yǔ)言的程序執(zhí)行效率高。可以脫離語(yǔ)言環(huán)境獨(dú)立運(yùn)行。
缺點(diǎn):編譯之后如果需要修改就需要整個(gè)模塊重新編譯。編譯的時(shí)候根據(jù)對(duì)應(yīng)的運(yùn)行環(huán)境生成機(jī)器碼,不同的操作系統(tǒng)之間移植就會(huì)有問(wèn)題,需要根據(jù)運(yùn)行的操作系統(tǒng)環(huán)境編譯不同的可執(zhí)行文件。
解釋型
優(yōu)點(diǎn):有良好的平臺(tái)兼容性,在任何環(huán)境中都可以運(yùn)行,前提是安裝了解釋器(虛擬機(jī))。靈活,修改代碼的時(shí)候直接修改就可以,可以快速部署,不用停機(jī)維護(hù)。
缺點(diǎn):每次運(yùn)行的時(shí)候都要解釋一遍,性能上不如編譯型語(yǔ)言。
?
? d.更多解釋詳見
http://www.cnblogs.com/alex3714/articles/5465198.html
http://www.cnblogs.com/wupeiqi/articles
?
轉(zhuǎn)載于:https://www.cnblogs.com/you0329/p/6761569.html
總結(jié)
以上是生活随笔為你收集整理的python-day1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 04 基础
- 下一篇: python基础——变量