亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

python基礎(chǔ)

Original 2016-11-21 09:29:37 459
abstrakt:開(kāi)啟python之路1.python簡(jiǎn)介Python是著名的Guido van Rossum(吉多·范羅蘇姆)在1989年圣誕節(jié)期間,為了打發(fā)無(wú)聊的圣誕節(jié)而編寫(xiě)的一個(gè)編程語(yǔ)言,之所以選中Python(大蟒蛇的意思)作為該編程語(yǔ)言的名字,是因?yàn)樗且粋€(gè)叫Monty Python的喜劇團(tuán)體的愛(ài)好者。2.python實(shí)現(xiàn)的分類CpythonPython的官方版本,使用C語(yǔ)言實(shí)現(xiàn),使用最為廣泛,CPyth

開(kāi)啟python之路

1.python簡(jiǎn)介


Python是著名的Guido van Rossum(吉多·范羅蘇姆)在1989年圣誕節(jié)期間,為了打發(fā)無(wú)聊的圣誕節(jié)而編寫(xiě)的一個(gè)編程語(yǔ)言,之所以選中Python(大蟒蛇的意思)作為該編程語(yǔ)言的名字,是因?yàn)樗且粋€(gè)叫Monty Python的喜劇團(tuán)體的愛(ài)好者。


2.python實(shí)現(xiàn)的分類


Cpython

Python的官方版本,使用C語(yǔ)言實(shí)現(xiàn),使用最為廣泛,CPython實(shí)現(xiàn)會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(.pyc文件),然后運(yùn)行在Python虛擬機(jī)上,運(yùn)行完畢之后釋放內(nèi)存,退出程序。

jython

Jython是個(gè)Python的一種實(shí)現(xiàn)方式,Jython編譯Python代碼為Java字節(jié)碼,然后由JVM(Java虛擬機(jī))執(zhí)行,說(shuō)白了此Python程序與Java程序沒(méi)有區(qū)別,只是源代碼不一樣。

IronPython

IronPython是Python的C#實(shí)現(xiàn),并且它將Python代碼編譯成C#中間代碼(與Jython類似),然后運(yùn)行,它與.NET語(yǔ)言的互操作性也非常好。

2.python代碼運(yùn)行過(guò)程

wKioL1gxttjQAx_AAABhyAolaV0888.png

3.注釋

當(dāng)行注視:# 被注釋內(nèi)容

多行注釋:""" 被注釋內(nèi)容 """

4.hello world


學(xué)編程語(yǔ)言開(kāi)始都是從hello world開(kāi)始,我們來(lái)看看pyton如何實(shí)現(xiàn)。

在python3中:
print ("hello world")
而python2中:
print 'hello world'

5.字符編碼

python解釋器在加載 .py 文件中的代碼時(shí),會(huì)對(duì)內(nèi)容進(jìn)行編碼(默認(rèn)ascii)ASCII(American Standard Code for Information Interchange,美國(guó)標(biāo)準(zhǔn)信息交換代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語(yǔ)和其他西歐語(yǔ)言,其最多只能用 8 位來(lái)表示(一個(gè)字節(jié)),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個(gè)符號(hào)。

顯然ASCII碼無(wú)法將世界上的各種文字和符號(hào)全部表示,所以,就需要新出一種可以代表所有字符和符號(hào)的編碼,即:Unicode。

Unicode(統(tǒng)一碼、萬(wàn)國(guó)碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語(yǔ)言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,規(guī)定雖有的字符和符號(hào)最少由 16 位來(lái)表示(2個(gè)字節(jié)),即:2 **16 = 65536,注:此處說(shuō)的的是最少2個(gè)字節(jié),可能更多。

UTF-8,是對(duì)Unicode編碼的壓縮和優(yōu)化,它不再使用最少使用2個(gè)字節(jié),而是將所有的字符和符號(hào)進(jìn)行分類:ascii碼中的內(nèi)容用1個(gè)字節(jié)保存、歐洲的字符用2個(gè)字節(jié)保存,東亞的字符用3個(gè)字節(jié)保存···

關(guān)于中文編碼表示


# -*- coding: utf-8 -*-

6.變量的定義

例:

name="W-D"

1.變量定義的規(guī)則:

變量名只能是 字母、數(shù)字或下劃線的任意組合

變量名的第一個(gè)字符不能是數(shù)字

以下關(guān)鍵字不能聲明為變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

2.變量的賦值

變量的賦值切記,當(dāng)有一個(gè)變量對(duì)另一個(gè)變量賦值的時(shí)候,改變前一個(gè)變量并不會(huì)影響前一個(gè)變量。

name1="W-D"
name2=name1
name1="json"
print(name1,name2)
結(jié)果:
json W-D
下圖可以解釋其原因

wKioL1gxttjQAx_AAABhyAolaV0888.png

7.輸入與輸出

1.輸入(pyton2與python3略微不同)

在python2中用戶輸入的方式有兩種

  1.raw_input

  在python2中raw_input默認(rèn)會(huì)將你輸入的內(nèi)容作為字符串處理,例如:

#!/usr/bin/env python
#_*_coding:utf-8_*_
name = raw_input("input your name:")
print type(name)
print("Hello " + name )


執(zhí)行結(jié)果
input your name:1111
<type 'str'>
Hello 1111

2.input
而pyton2中的input默認(rèn)會(huì)識(shí)別輸入內(nèi)容是數(shù)字還是字符串,并且當(dāng)用戶輸入的內(nèi)容為字符串的時(shí)候會(huì)把字符串當(dāng)
作變量處理。例如:

#!/usr/bin/env python
#_*_coding:utf-8_*_
msg='WD'
name = input("input your name:")
print type(name)
print("Hello " + name )
執(zhí)行結(jié)果:
input your name:msg

 <type 'str'>

 Hello WD


而在pyton3中input會(huì)直接將輸入內(nèi)容當(dāng)作字符串處理


3.格式劃字符串

所用格式:

%s:代表字符串

%d:代表整數(shù)

%f:代表浮點(diǎn)數(shù)

下面來(lái)格式化輸出一個(gè)字符串:


#!/usr/bin/env python
# _*_coding:utf-8_*_

name = input("input your name:")
age= input("input your age:")
job = input("input your job:")
msg='''
name:%s
age:%s
job:%s
'''
print(msg %(name,age,job)

結(jié)果:
input your name:wd
input your age:124
input your job:it

name:wd
age:124
job:it

8.常用模塊初識(shí)

Python的強(qiáng)大之處在于他有非常豐富和強(qiáng)大的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù),先讓我們來(lái)介紹幾個(gè)常用模塊。

tips:當(dāng)你對(duì)一個(gè)模塊完全不了解的時(shí)候可以使用幫助來(lái)查看它的使用方法

在linux中可以使用先dir(模塊名),查看模塊中含有的函數(shù),在使用help(模塊名.函數(shù))查看具體使用方法

例如:


>>> import os

>>> dir(os)

>>> help(os.system)

在windos(pycharm中),使用shift+鼠標(biāo)左鍵


1.sys

sys作為常用模塊之一,其中有非常多的函數(shù),如argv,該模塊是用了獲取腳本參數(shù)。例如:


#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

print(sys.argv)

執(zhí)行:

python test.py helo world

結(jié)果:

['test.py', 'hello', 'world']  #把執(zhí)行腳本時(shí)傳遞的參數(shù)獲取到了

2.os

os也是基本模塊之一,我們可以使用os中的system方法調(diào)用系統(tǒng)命令


#!/usr/bin/env python
# _*_coding:utf-8_*_
import os
print(os.system('ipconfig'))

這樣就可以將IP打印出來(lái)


9.數(shù)據(jù)類型



1、數(shù)字

2 是一個(gè)整數(shù)的例子。
長(zhǎng)整數(shù) 不過(guò)是大一些的整數(shù)。
3.23和52.3E-4是浮點(diǎn)數(shù)的例子。E標(biāo)記表示10的冪。在這里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是復(fù)數(shù)的例子,其中-5,4為實(shí)數(shù),j為虛數(shù),數(shù)學(xué)中表示復(fù)數(shù)是什么?。

int(整型)

  在32位機(jī)器上,整數(shù)的位數(shù)為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647
  在64位系統(tǒng)上,整數(shù)的位數(shù)為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(長(zhǎng)整型)
  跟C語(yǔ)言不同,Python的長(zhǎng)整數(shù)沒(méi)有指定位寬,即:Python沒(méi)有限制長(zhǎng)整數(shù)數(shù)值的大小,但實(shí)際上由于機(jī)器內(nèi)存有限,我們使用的長(zhǎng)整數(shù)數(shù)值不可能無(wú)限大。
  注意,自從Python2.2起,如果整數(shù)發(fā)生溢出,Python會(huì)自動(dòng)將整數(shù)數(shù)據(jù)轉(zhuǎn)換為長(zhǎng)整數(shù),所以如今在長(zhǎng)整數(shù)數(shù)據(jù)后面不加字母L也不會(huì)導(dǎo)致嚴(yán)重后果了。
float(浮點(diǎn)型)

      先掃盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
  浮點(diǎn)數(shù)用來(lái)處理實(shí)數(shù),即帶有小數(shù)的數(shù)字。類似于C語(yǔ)言中的double類型,占8個(gè)字節(jié)(64位),其中52位表示底,11位表示指數(shù),剩下的一位表示符號(hào)。
complex(復(fù)數(shù))
  復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分組成,一般形式為x+yj,其中的x是復(fù)數(shù)的實(shí)數(shù)部分,y是復(fù)數(shù)的虛數(shù)部分,這里的x和y都是實(shí)數(shù)。

注:Python中存在小數(shù)字池:-5 ~ 257

2、布爾值

  真或假

  1 或 0

3、字符串


10.字符串操作


移除空白或者特殊字符

strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格)

語(yǔ)法:

str.strip(參數(shù)),參數(shù)為需要移除的對(duì)象

例如:

#!/usr/bin/env python
# _*_coding:utf-8_*_

name='123ba'
name1=name.strip('ba')
print (name,name1)

執(zhí)行結(jié)果:

123ba 123

分割
分割主要指將字符串分割成list,用的到函數(shù)為split
語(yǔ)法:
str.split("分隔符")
例如:

#!/usr/bin/env python
# _*_coding:utf-8_*_

name='1:2:3ba'
name1=name.split(':')
print (name,name1)

執(zhí)行結(jié)果:
1:2:3ba ['1', '2', '3ba']

索引
索引代表某個(gè)字符在該字符串中的位置,默認(rèn)從0開(kāi)始。
1.查看字符串中的索引,例如查看字符2在該字符串的索引:
name='1234qwer'
print(name.index("2"))

結(jié)果:
1

Process finished with exit code

2.使用索引取值
取單個(gè)字符:str[索引位置]
取多個(gè)字符:str[start:end](也可以叫做字符串的切片)

3.長(zhǎng)度
求字符串長(zhǎng)度需要用到len函數(shù)
例如:
name='1234qwer'
print(len(name))

結(jié)果:

8

更多字符串函數(shù)請(qǐng)?jiān)趐ycharm中輸入str使用shift+左鍵點(diǎn)解查看


11.列表(list)


其實(shí)列表的操作與字符串大同小異

創(chuàng)建列表

msg=['name','age','job']

或者

msg=list(['name','age','job'])


基本操作:

索引(index)

切片

追加(append:在末尾追加)

插入(INSERT:一次只能插一個(gè)元素)

刪除(del,remove)

長(zhǎng)度(len)

切片

循環(huán)(for)

包含(extend)


tips:

1.在列表倒著取值的時(shí)候,一定是從小到大,并且開(kāi)始位置和結(jié)束位置都必須是負(fù)數(shù),例如:

#!/usr/bin/env python
# _*_coding:utf-8_*_
name=['age','job','num',1,2,3,4]
print(name[-5:-1])
執(zhí)行結(jié)果:
['num', 1, 2, 3]

2.不斷取值

#!/usr/bin/env python
# _*_coding:utf-8_*_
name=['age','job','num',1,2,3,4]
print(name[-5:-1][0][0])
結(jié)果:
n

3.判斷元素是否在列表中

#!/usr/bin/env python
# _*_coding:utf-8_*_
name=['age','job','num',1,2,3,4]
print(1 in name)

結(jié)果:

true

 4.列表統(tǒng)計(jì)元素(count)

  count,若元素存在則返回元素存在的個(gè)數(shù),若不存在會(huì)報(bào)錯(cuò)


name=['age','job','num',1,2,3,4,1]

print(name.count(1))

結(jié)果:

2

  5.列表的拷貝

列表的拷貝分為一般拷貝(賦值)和深度拷貝,區(qū)別在于,當(dāng)一般拷貝的時(shí)候,并且原列表中含有列表或者字典或者元祖的時(shí),修改原列表里面嵌套的列表中的元素會(huì)影響拷貝后的列表,但如果只針對(duì)整個(gè)嵌套的列表做更改,將不會(huì)影響拷貝后的列表,深度拷貝則不存在此種情況。例如:

#!/usr/bin/env python
# _*_coding:utf-8_*_
name1=['age','job','num',1,2,3,4,1]
name2=name1.copy()
name1[0]=1
print(name1)
print(name2)

結(jié)果:


[1, 'job', 'num', 1, 2, 3, 4, 1]

['age', 'job', 'num', 1, 2, 3, 4, 1]

結(jié)果表明修改name1并不影響name2


如果列表中嵌套列表并對(duì)嵌套列表修改:


#!/usr/bin/env python
# _*_coding:utf-8_*_
name1=['age','job','num',[1,2,3,4,1]]
name2=name1.copy()
name1[-1]='WD'
print(name1)
print(name2)

結(jié)果:

['age', 'job', 'num', 'WD']

['age', 'job', 'num', [1, 2, 3, 4, 1]]

結(jié)果表明:修改了第一個(gè)列表中的嵌套的列表并不影響拷貝后的列表。

如果修改列表中嵌套列表的元素,就會(huì)影響到拷貝后的列表:


#!/usr/bin/env python
# _*_coding:utf-8_*_
name1=['age','job','num',[1,2,3,4,1]]
name2=name1.copy()
name1[-1][0]='WD'
print(name1)
print(name2)

結(jié)果:

['age', 'job', 'num', ['WD', 2, 3, 4, 1]]

['age', 'job', 'num', ['WD', 2, 3, 4, 1]]


結(jié)果表明:修改了name1也將name2修改了。

原因分析:一般拷貝(或者說(shuō)賦值)在拷貝嵌套的列表時(shí),只拷貝了內(nèi)存地址,也就是說(shuō)拷貝前和拷貝后的嵌套列表內(nèi)存地址指向了同一內(nèi)容,若對(duì)整個(gè)嵌套的列表做修改(相當(dāng)于對(duì)內(nèi)存地址做修改,你該你的,我的還是沒(méi)變),則互不影響,若對(duì)嵌套列表指向的內(nèi)容做修改,則會(huì)修改拷貝后的列表。


12.字典(以hash的方式存儲(chǔ),也就是說(shuō)無(wú)順序)


1.創(chuàng)建字典

people={"name":"WD","age":24}

或者

people=dict({"name":"WD","age":24})


常用操作:

索引

新增

刪除

鍵、值、鍵值對(duì)

循環(huán)

長(zhǎng)度


1.查看或者獲取字典某個(gè)元素

查看字典中的元素,使用key值查看,獲取使用get,如:

#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}
print(person["name"])

結(jié)果:

WD

2.修改或設(shè)置字典中的值

若設(shè)置的key在字典中沒(méi)有,則增加

#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}
person["name"]='jack'
print(person)

結(jié)果:

{'age': 24, 'job': 'IT', 'name': 'jack'}

3.刪除元素(pop,del)

  del刪除在很多地方都能使用,pop默認(rèn)刪除并且會(huì)打印刪除的元素

#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}

print(person)
print(person.pop('name'))
del(person['job'])
print(person)

結(jié)果:

{'job': 'IT', 'name': 'WD', 'age': 24}

WD

{'age': 24}

4.使用字典更新字典

使用字典更新字典,函數(shù)是UPDATE,當(dāng)存在相同的key時(shí)會(huì)覆蓋


5.將字典轉(zhuǎn)化為元祖(items)

當(dāng)字典中的數(shù)據(jù)量非常大的時(shí)候請(qǐng)慎重使用


#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}

print(person.items())

結(jié)果:

dict_items([('name', 'WD'), ('job', 'IT'), ('age', 24)])


6.鍵、值、鍵值對(duì)

字典中的鍵(key)、值(values)能單獨(dú)查看


#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}

print(person.keys())
print(person.values())

結(jié)果:

dict_keys(['name', 'age', 'job'])

dict_values(['WD', 24, 'IT'])

7.設(shè)置默認(rèn)key


#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}
person.setdefault('num','aaaaaa')
print(person)

結(jié)果:

{'age': 24, 'num': 'aaaaaa', 'name': 'WD', 'job': 'IT'}


8.高效率循環(huán)模式

#!/usr/bin/env python
# _*_coding:utf-8_*_
person={"name":"WD","age":24,"job":"IT"}
for key in person:
   print(key,person[key])

結(jié)果:

age 24

name WD

job IT



13.if語(yǔ)句


if語(yǔ)句是用來(lái)檢查一個(gè)條件:如果條件為真(true),我們運(yùn)行一個(gè)語(yǔ)句塊(你為if塊),否則(else),我們執(zhí)行另一個(gè)語(yǔ)句塊(稱為else塊),else子語(yǔ)句是可選的。

語(yǔ)法:

if (條件):

(else:)

或者

if (條件):

elif (條件):

elif (條件):

...

(else)

如:


#!/usr/bin/env python
# _*_coding:utf-8_*_
num=4
if num>5:
   print("more than 5")
else:
   print("less than 5")
結(jié)果:
less than 5


14.while循環(huán)

while語(yǔ)句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。
語(yǔ)法:
while (條件):
   .....
   
 在while循環(huán)中通常會(huì)用到兩個(gè)關(guān)鍵的函數(shù):
 1.break
 break代表,跳出當(dāng)前循環(huán)體,下面代碼不再執(zhí)行,繼續(xù)執(zhí)行循環(huán)后面的代碼。
 例子:
 
#!/usr/bin/env python
# _*_coding:utf-8_*_
num=5
while num<10:
   num+=1
   print(num)
   break

  結(jié)果:

 6

  2.continue

跳出本次循環(huán),繼續(xù)下一次循環(huán)



15.for語(yǔ)句


for語(yǔ)句是我們經(jīng)常用到的循環(huán),下面來(lái)看一個(gè)簡(jiǎn)單的列子

#!/usr/bin/env python
# _*_coding:utf-8_*_
for i in range(5):
   print ("this is %d time "%i )

結(jié)果:


this is 0 time 

this is 1 time 

this is 2 time 

this is 3 time 

this is 4 time 




16.數(shù)據(jù)運(yùn)算


算數(shù)運(yùn)算:


wKioL1gxttjQAx_AAABhyAolaV0888.png

比較運(yùn)算:

wKioL1gxttjQAx_AAABhyAolaV0888.png

賦值運(yùn)算:

wKioL1gxttjQAx_AAABhyAolaV0888.png

邏輯運(yùn)算

wKioL1gxttjQAx_AAABhyAolaV0888.png

成員運(yùn)算:

wKioL1gxttjQAx_AAABhyAolaV0888.png

17.set集合(元素唯一無(wú)序)

1.創(chuàng)建集合:

a1={'123','qwe'}

或者

a1=['123,'qwe']

a1=set(a1)

2.集合的操作

添加(add,UPDATE)

清除(clear)

拷貝(copy淺的)

比較(difference)

移除(discard,remove)

集合運(yùn)算(交、并)


Versionshinweise

Beliebte Eintr?ge