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

python基礎

原創(chuàng) 2016-11-21 09:29:37 459
摘要:開啟python之路1.python簡介Python是著名的Guido van Rossum(吉多·范羅蘇姆)在1989年圣誕節(jié)期間,為了打發(fā)無聊的圣誕節(jié)而編寫的一個編程語言,之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為他是一個叫Monty Python的喜劇團體的愛好者。2.python實現(xiàn)的分類CpythonPython的官方版本,使用C語言實現(xiàn),使用最為廣泛,CPyth

開啟python之路

1.python簡介


Python是著名的Guido van Rossum(吉多·范羅蘇姆)在1989年圣誕節(jié)期間,為了打發(fā)無聊的圣誕節(jié)而編寫的一個編程語言,之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為他是一個叫Monty Python的喜劇團體的愛好者。


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


Cpython

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

jython

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

IronPython

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

2.python代碼運行過程

wKioL1gxttjQAx_AAABhyAolaV0888.png

3.注釋

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

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

4.hello world


學編程語言開始都是從hello world開始,我們來看看pyton如何實現(xiàn)。

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

5.字符編碼

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

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

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

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

關于中文編碼表示


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

6.變量的定義

例:

name="W-D"

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

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

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

以下關鍵字不能聲明為變量名
['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.變量的賦值

變量的賦值切記,當有一個變量對另一個變量賦值的時候,改變前一個變量并不會影響前一個變量。

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

wKioL1gxttjQAx_AAABhyAolaV0888.png

7.輸入與輸出

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

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

  1.raw_input

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

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


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

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

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

 <type 'str'>

 Hello WD


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


3.格式劃字符串

所用格式:

%s:代表字符串

%d:代表整數(shù)

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

下面來格式化輸出一個字符串:


#!/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)

結果:
input your name:wd
input your age:124
input your job:it

name:wd
age:124
job:it

8.常用模塊初識

Python的強大之處在于他有非常豐富和強大的標準庫和第三方庫,先讓我們來介紹幾個常用模塊。

tips:當你對一個模塊完全不了解的時候可以使用幫助來查看它的使用方法

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

例如:


>>> import os

>>> dir(os)

>>> help(os.system)

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


1.sys

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


#!/usr/bin/env python

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

import sys

print(sys.argv)

執(zhí)行:

python test.py helo world

結果:

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

2.os

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


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

這樣就可以將IP打印出來


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



1、數(shù)字

2 是一個整數(shù)的例子。
長整數(shù) 不過是大一些的整數(shù)。
3.23和52.3E-4是浮點數(shù)的例子。E標記表示10的冪。在這里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是復數(shù)的例子,其中-5,4為實數(shù),j為虛數(shù),數(shù)學中表示復數(shù)是什么?。

int(整型)

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

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

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

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

2、布爾值

  真或假

  1 或 0

3、字符串


10.字符串操作


移除空白或者特殊字符

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

語法:

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

例如:

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

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

執(zhí)行結果:

123ba 123

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

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

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

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

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

結果:
1

Process finished with exit code

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

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

結果:

8

更多字符串函數(shù)請在pycharm中輸入str使用shift+左鍵點解查看


11.列表(list)


其實列表的操作與字符串大同小異

創(chuàng)建列表

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

或者

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


基本操作:

索引(index)

切片

追加(append:在末尾追加)

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

刪除(del,remove)

長度(len)

切片

循環(huán)(for)

包含(extend)


tips:

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

#!/usr/bin/env python
# _*_coding:utf-8_*_
name=['age','job','num',1,2,3,4]
print(name[-5:-1])
執(zhí)行結果:
['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])
結果:
n

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

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

結果:

true

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

  count,若元素存在則返回元素存在的個數(shù),若不存在會報錯


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

print(name.count(1))

結果:

2

  5.列表的拷貝

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

#!/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)

結果:


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

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

結果表明修改name1并不影響name2


如果列表中嵌套列表并對嵌套列表修改:


#!/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)

結果:

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

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

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

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


#!/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)

結果:

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

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


結果表明:修改了name1也將name2修改了。

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


12.字典(以hash的方式存儲,也就是說無順序)


1.創(chuàng)建字典

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

或者

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


常用操作:

索引

新增

刪除

鍵、值、鍵值對

循環(huán)

長度


1.查看或者獲取字典某個元素

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

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

結果:

WD

2.修改或設置字典中的值

若設置的key在字典中沒有,則增加

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

結果:

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

3.刪除元素(pop,del)

  del刪除在很多地方都能使用,pop默認刪除并且會打印刪除的元素

#!/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)

結果:

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

WD

{'age': 24}

4.使用字典更新字典

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


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

當字典中的數(shù)據(jù)量非常大的時候請慎重使用


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

print(person.items())

結果:

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


6.鍵、值、鍵值對

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


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

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

結果:

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

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

7.設置默認key


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

結果:

{'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])

結果:

age 24

name WD

job IT



13.if語句


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

語法:

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")
結果:
less than 5


14.while循環(huán)

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

  結果:

 6

  2.continue

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



15.for語句


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

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

結果:


this is 0 time 

this is 1 time 

this is 2 time 

this is 3 time 

this is 4 time 




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


算數(shù)運算:


wKioL1gxttjQAx_AAABhyAolaV0888.png

比較運算:

wKioL1gxttjQAx_AAABhyAolaV0888.png

賦值運算:

wKioL1gxttjQAx_AAABhyAolaV0888.png

邏輯運算

wKioL1gxttjQAx_AAABhyAolaV0888.png

成員運算:

wKioL1gxttjQAx_AAABhyAolaV0888.png

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

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

a1={'123','qwe'}

或者

a1=['123,'qwe']

a1=set(a1)

2.集合的操作

添加(add,UPDATE)

清除(clear)

拷貝(copy淺的)

比較(difference)

移除(discard,remove)

集合運算(交、并)


發(fā)佈手記

熱門詞條