成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

python入門(mén)

xeblog / 1548人閱讀

摘要:零預(yù)備知識(shí)字符編碼計(jì)算機(jī)只能處理數(shù)字,所以為文本需要轉(zhuǎn)化為數(shù)字才能被計(jì)算機(jī)處理,計(jì)算機(jī)里八個(gè)比特作為一個(gè)字節(jié),這是數(shù)據(jù)的存儲(chǔ)基礎(chǔ)單位。

零、預(yù)備知識(shí)

0.1 字符編碼
計(jì)算機(jī)只能處理數(shù)字,所以為文本需要轉(zhuǎn)化為數(shù)字才能被計(jì)算機(jī)處理,計(jì)算機(jī)里八個(gè)比特(bit)作為一個(gè)字節(jié)(byte),這是數(shù)據(jù)的存儲(chǔ)基礎(chǔ)單位。計(jì)算機(jī)為了處理文本,有以下三種編碼方式:

ASCII碼:只有大小寫(xiě)英文字母,數(shù)字,一些符號(hào)共127個(gè);1個(gè)字節(jié),

Unicode碼:所有語(yǔ)言都統(tǒng)一在一套編碼里;一般2個(gè)字節(jié),生僻字4個(gè)字節(jié);在ASCII碼前補(bǔ)0就行

UTF-8編碼:根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié);常用的英文字母1個(gè)字節(jié),漢字3個(gè)字節(jié),生僻的字符4-6個(gè)字節(jié);ASCII編碼實(shí)際上可以被看成是UTF-8編碼的一部分

計(jì)算機(jī)內(nèi)存統(tǒng)一使用Unicode編碼,保存在硬盤(pán)(例如文件保存)里或網(wǎng)絡(luò)傳輸時(shí)轉(zhuǎn)換為UTF-8編碼

一、簡(jiǎn)介

程序運(yùn)行都是通過(guò)機(jī)器指令執(zhí)行的,編程語(yǔ)言其實(shí)相當(dāng)于機(jī)器指令和自然語(yǔ)言間的一個(gè)橋梁,編程語(yǔ)言在運(yùn)行時(shí)都將會(huì)翻譯為計(jì)算機(jī)可以識(shí)別的機(jī)器指令。

python是一門(mén)高級(jí)的語(yǔ)言,其代碼行數(shù)少,因而運(yùn)行時(shí)間也長(zhǎng)。完成同樣的一個(gè)功能,c語(yǔ)言可能需要1000行,Java100行,python20行。

python一般用于實(shí)現(xiàn)應(yīng)用程序,如算法,網(wǎng)站后臺(tái),在線游戲后臺(tái),c語(yǔ)言一般用于底層的接近硬件的開(kāi)發(fā)如操作系統(tǒng),java一般用于網(wǎng)站開(kāi)發(fā)和Android,swift/objective-c主要用于iPhone開(kāi)發(fā)

解釋型語(yǔ)言:python是解釋型語(yǔ)言,在運(yùn)行時(shí)逐行翻譯為機(jī)器碼;c語(yǔ)言則是編譯型語(yǔ)言,它在運(yùn)行前編譯為機(jī)器碼。

動(dòng)態(tài)數(shù)據(jù)類(lèi)型:python數(shù)據(jù)類(lèi)型為動(dòng)態(tài),不同類(lèi)型變量可以相互賦值,而類(lèi)似于java,c是靜態(tài)類(lèi)型,聲明變量時(shí)需聲明數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型不同相互賦值則會(huì)報(bào)錯(cuò)

1.1 優(yōu)點(diǎn):

代碼量少

有豐富的基本庫(kù)和第三方庫(kù),基本代碼庫(kù)包含網(wǎng)絡(luò),GUI,數(shù)據(jù)庫(kù),文件,文本等方面

1.2 缺點(diǎn):

程序運(yùn)行時(shí)間長(zhǎng)

代碼不能加密。分享代碼只能通過(guò)源代碼,不像c語(yǔ)言可以分享編譯后的機(jī)器碼

1.3 適用方面:

日常小工具

網(wǎng)絡(luò)應(yīng)用,如網(wǎng)絡(luò)后臺(tái),在線游戲

封裝其他語(yǔ)言完成的程序

二、安裝python

python是跨平臺(tái)的,在windows上編寫(xiě)的代碼直接搬到mac/linux上也可以運(yùn)行

安裝python的時(shí)候你將會(huì)得到一個(gè)python解釋器,包括一個(gè)pyhton命令行交互運(yùn)行環(huán)境和一個(gè)集成開(kāi)發(fā)環(huán)境

2.1 安裝步驟:

下載安裝:從Python官網(wǎng)下載pyhton的exe安裝文件,一路下一步安裝后即可(注意將python.exe路徑加入path環(huán)境變量里,不然Windows可能沒(méi)辦法找到)

進(jìn)入命令行交互環(huán)境:在windows系統(tǒng)下打開(kāi)cmd命令行提示符窗口,提示符類(lèi)似c:>

進(jìn)入python交互環(huán)境:在命令行提示符窗口里輸入python,出現(xiàn)提示符>>>,這就表明已經(jīng)進(jìn)入python交互運(yùn)行環(huán)境,然后就可以輸入python代碼,回車(chē)則執(zhí)行

退出python交互環(huán)境:輸入exit()并回車(chē),則可以退出

2.2 python解釋器:

我們編寫(xiě)python代碼時(shí)會(huì)得到一個(gè)后綴為.py的文本,我們需要一個(gè)Python解釋器來(lái)解釋?zhuān)琍ython解釋器包含很多版本

CPython: python的官方解釋器,用c語(yǔ)言開(kāi)發(fā)出來(lái)的,在命令行交互窗口里輸入python則啟動(dòng)CPython解釋器,提示符是>>>

IPython: 基于CPython的解釋器,在CPython的解釋方式上有所增強(qiáng),執(zhí)行程序得到結(jié)果和CPython一樣,提示符是In[符號(hào)]

pypy: 采用JIT技術(shù),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋?zhuān)?,?zhí)行程序結(jié)果可能和CPython不同

Jython:運(yùn)行在Java平臺(tái)上的解釋器,可以把Python代碼編譯成為Java字節(jié)碼

ItonPython:運(yùn)行在微軟.Net平臺(tái)上的解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼

三、第一個(gè)python程序

命令行模式和python交互模式:

命令行模式:cd 路徑命令行將路徑轉(zhuǎn)到需要執(zhí)行的Python文件的目錄下,然后用命令行python xx.py執(zhí)行文件,相當(dāng)于啟動(dòng)了Python解釋器,一次性執(zhí)行Python代碼

Python交互模式: 直接輸入Python代碼則可以輸出代碼執(zhí)行結(jié)果,相對(duì)于啟動(dòng)Python解釋器,輸入一行代碼就執(zhí)行一行,一般用作調(diào)試Python代碼,具體例如下

>>>100+200
300

>>>print("hello world!")
hello world!

在打代碼時(shí)可以一邊在文本編輯器里編輯,一邊粘貼到Python交互環(huán)境里進(jìn)行調(diào)試。

四、Python基礎(chǔ)

4.1 輸出print()

輸出單個(gè)字符串:print("hello world!")

輸出多個(gè)字符串:print("hello,world")多個(gè)字符串用逗號(hào)隔開(kāi),輸出時(shí)逗號(hào)變成空格

輸出運(yùn)算式:print(200+100)

輸出字符串和運(yùn)算式:print("100+200=",100+200)

4.2 輸入input()

輸入字符串存在變量里:s=input(),此時(shí)name是str類(lèi)型,要變成int類(lèi)型需要函數(shù)int(),news=int(s)

輸入字符串前顯示提示信息:name=input("please enter your name")

4.3 基礎(chǔ)

注釋?zhuān)?/strong>#注釋

代碼塊:Python代碼每一行是一個(gè)語(yǔ)句(結(jié)尾不用;),語(yǔ)句以冒號(hào):結(jié)尾時(shí)縮進(jìn)的代碼為代碼塊

縮進(jìn): 縮進(jìn)為四個(gè)空格

Python嚴(yán)格大小寫(xiě)

#輸出最大值
a=100
b=200
if(a>b):
    print(a)
else:
    print(b)

4.4 數(shù)據(jù)類(lèi)型

整數(shù):Python可以處理任意大小的整數(shù),包括負(fù)整數(shù),八進(jìn)制0開(kāi)頭,十六進(jìn)制0X開(kāi)頭,如:1,3,04,0xff00,-394,整數(shù)運(yùn)算永遠(yuǎn)是精確的,大小沒(méi)有限制
range(n)函數(shù),生成一個(gè)從0到n-1的整數(shù)序列

>>>list(range(5))
[0, 1, 2, 3, 4]

浮點(diǎn)數(shù):浮點(diǎn)數(shù)就是小數(shù),很大的小數(shù)用科學(xué)計(jì)數(shù)法,如:2.23,-3.22,1.23e8,浮點(diǎn)運(yùn)算可能因?yàn)樗纳嵛迦氘a(chǎn)生誤差,大小沒(méi)有限制,但是超過(guò)某個(gè)范圍則為inf(無(wú)限大)

字符串:用" "或" "包裹起來(lái),如果需要字符" "則用" "包裹,如果同時(shí)需要" 和"則需要轉(zhuǎn)義

"        "
"       "
        

        換行
	        制表符
r""       默認(rèn)不轉(zhuǎn)義,轉(zhuǎn)移符將按原字符表示
""" """   輸入的換行可以保留

字符串常用函數(shù):ord("字符")獲得字符編碼的十進(jìn)制表示;chr("編碼")獲得編碼對(duì)應(yīng)函數(shù);len("字符串")計(jì)算字符串的字符數(shù),len(b"byte")計(jì)算byte字節(jié)數(shù)

>>>ord("A")
65
>>> ord("中")
20013
>>> chr(66)
"B"
>>> chr(25991)
"文"
#知道字符十六進(jìn)制表示可直接用"xxxxxx"寫(xiě)str
>>> "u4e2du6587"
"中文"
>>> len("中文")
2
>>> len("中文".encode("utf-8"))
6
b = a.replace("a", "A")    //b是將a中a替換為A的字符串Abc,a仍舊是原字符串a(chǎn)bc
    

字符串格式化:,可以用占位符或format()函數(shù)進(jìn)行格式化,%d整數(shù)(%2d表示長(zhǎng)度為2,%02d表示長(zhǎng)度為2,不足補(bǔ)零),%f浮點(diǎn)數(shù)(%.2f表示保留兩位小數(shù)),%s字符串(可以將任何類(lèi)型數(shù)據(jù)轉(zhuǎn)換為字符串),%x十六進(jìn)制整,format用{0}{1}占位

>>>"Hi, %s, you have $%d." % ("Michael", 1000000)
"Hi, Michael, you have $1000000."
>>> "Hello, {0}, 成績(jī)提升了 {1:.1f}%".format("小明", 17.125)
"Hello, 小明, 成績(jī)提升了 17.1%"
    

字符串編碼:
python中:str類(lèi)型;Unicode編碼;占多個(gè)字節(jié);‘’;用encode(編碼方式名)編碼
磁盤(pán)和網(wǎng)絡(luò)中:byte類(lèi)型;ASCII編碼和utf-8編碼;占一個(gè)字節(jié);b‘’;用decode(編碼方式名)解碼

    #編碼
    >>>"ABC".encode("ascii")
    b"ABC"
    >>> "中文".encode("utf-8")
    b"xe4xb8xadxe6x96x87"
    #解碼
    >>> b"ABC".decode("ascii")
    "ABC"
    >>> b"xe4xb8xadxe6x96x87".decode("utf-8")
    "中文"

布爾值:FlaseTrue,運(yùn)算符是and or not
非零數(shù)值,非空字符串,非空l(shuí)ist都是true

空置:None

字典
查找插入速度快,不會(huì)隨元素增加變化,需要大量?jī)?nèi)存,內(nèi)存浪費(fèi)多
dict類(lèi)型:使用健-值(key-value)存儲(chǔ),可以通過(guò)key采用hash算法直接計(jì)算出value的存放位置,所有key只能是不可變數(shù)據(jù),例如str,int,不能是list

聲明:`d = {"Michael": 95, "Bob": 75, "Tracy": 85}`
取值:d["key"]
判斷key是否存在:`"key" in data`或者data.get("key")
刪除:`data.pop("key")`
賦值:`data["key"]=newdata`

set類(lèi)型:一組無(wú)序的不重復(fù)的key集合,沒(méi)有vaule,需要一個(gè)list作為輸入集合,key也只能是不可變對(duì)象

聲明:s=set([1,2,3,3]) //重復(fù)元素自動(dòng)變?yōu)橐粋€(gè),s為{1,2,3}
添加:s.add(4)
刪除:s.remove(4)
交集并集:s1&s2 s1|s2  //和數(shù)學(xué)的交集并集一樣

列表
查找插入速度隨元素增加變慢,需要少量?jī)?nèi)存,內(nèi)存浪費(fèi)少
list類(lèi)型:相當(dāng)于數(shù)組,按順序查找
聲明:classmates = ["Michael", "Bob", "Tracy"],其中元素類(lèi)型可不同,用[]聲明
索引:從0到len(classmates-1)或-1,同理倒數(shù)第二個(gè)索引為-2以此類(lèi)推
函數(shù):append(),pop(),insert().len(),list()

classmates.append("Adam")          //追加
classmates.insert(索引位置, "Jack") //插入指定位置
classmates.pop()                   //刪除末尾
classmates.pop(索引位置)            //刪除指定位置
classmates[1] = "Sarah"            //指定位置賦值
len(s)                             //list元素個(gè)數(shù)
classmate.sort()                   //根據(jù)內(nèi)容字典排序
list()                             //強(qiáng)制轉(zhuǎn)換為list  

tuple類(lèi)型:和list相似,但一旦初始化其元素就不能修改,元素自身指向如list可修改,獲取元素方式和list一樣
聲明:classmates = ("Michael", "Bob", "Tracy"),只有一個(gè)元素需要加,不然不會(huì)認(rèn)作tuple類(lèi)型 t = (1,),用()聲明

自定義

4.5 變量

變量名:數(shù)字,大小字母,_,不能數(shù)字開(kāi)頭

同一變量可以反復(fù)賦值,無(wú)論賦值類(lèi)型

除法/得到數(shù)據(jù)均為浮點(diǎn)數(shù),//得到數(shù)據(jù)均去掉小數(shù)部分,為整數(shù),%取兩個(gè)整數(shù)的余數(shù)

4.6 常量

python沒(méi)有固定常量,默認(rèn)用大寫(xiě)的變量名表示常量

五、語(yǔ)句

5.1條件語(yǔ)句
注意if,else if,elif后面是:靠縮進(jìn)區(qū)別代碼塊,邏輯運(yùn)算符用and,or,not

if <條件判斷1>:
    <執(zhí)行1>
elif <條件判斷2>:
    <執(zhí)行2>
elif <條件判斷3>:
    <執(zhí)行3>
else:
    <執(zhí)行4>

5.2 循環(huán)語(yǔ)句
for x in data:把list和tuple類(lèi)型的data中的每個(gè)元素依次代入x

names = ["Michael", "Bob", "Tracy"]
for name in names:
    print(name)
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    print(x)

while:條件滿足,就不斷循環(huán),條件不滿足時(shí)退出循環(huán)

while n > 0:
    sum = sum + n

break:可以在循環(huán)過(guò)程中直接退出循環(huán)
continue:直接開(kāi)始下一輪循環(huán)

六、函數(shù)

函數(shù)名是指向一個(gè)函數(shù)對(duì)象的引用,把函數(shù)名賦給一個(gè)變量,相當(dāng)于給這個(gè)函數(shù)起了一個(gè)“別名”
6.1 調(diào)用函數(shù)
調(diào)用函數(shù)需要函數(shù)的名稱(chēng)和參數(shù),可以參考python官網(wǎng):http://docs.python.org/3/libr...,如果輸入的參數(shù)數(shù)目或類(lèi)型不對(duì)會(huì)報(bào)TypeError的錯(cuò)

TypeError: abs() takes exactly one argument (2 given)
TypeError: bad operand type for abs(): "str"

6.2 數(shù)據(jù)類(lèi)型轉(zhuǎn)換
python常用函數(shù)還包括數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),如int()函數(shù)可以把其他數(shù)據(jù)類(lèi)型轉(zhuǎn)換為整數(shù)
6.3 函數(shù)定義
函數(shù)定義由def,函數(shù)名(參數(shù)),return表示,如果沒(méi)有return語(yǔ)句,函數(shù)執(zhí)行完畢后返回None。return None可以簡(jiǎn)寫(xiě)為return

def 函數(shù)名(參數(shù)):
    if x >= 0:
        return x
    else:
        return -x

在python交互環(huán)境里定義,會(huì)出現(xiàn)...,定義完畢后輸入兩次回車(chē)出現(xiàn)提示符,即可執(zhí)行
如果函數(shù)定義在文件new.py里,則可以用命令行python new import 函數(shù)名導(dǎo)入函數(shù),然后再執(zhí)行
空函數(shù):用pass占位,也可用于if代碼塊里

def nop():
    pass

參數(shù)檢查:python可以檢查內(nèi)置函數(shù)參數(shù)個(gè)數(shù)和類(lèi)型,自定義函數(shù)只能檢查個(gè)數(shù),類(lèi)型需要用isinstace()自定義檢查

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError("bad operand type")

返回多個(gè)參數(shù):函數(shù)返回多個(gè)參數(shù)return a,b,實(shí)際是返回一個(gè)tuple類(lèi)型數(shù)據(jù),如果函數(shù)賦給多個(gè)變量c,d = new(1,2),則是將函數(shù)返回的tuple類(lèi)型數(shù)據(jù)依次賦給c,d;如果函數(shù)賦給一個(gè)變量e = new(1,2),則e即為這個(gè)tuple類(lèi)型變量

def new(a,b):
a=0
b=1
return a,b
>>>c,d = new(1,2)     //c=1,d=2
>>>e = new(1,2)       //e[0]=1,e[1]=2

6.4 函數(shù)參數(shù)
默認(rèn)參數(shù):power(x,n=2)默認(rèn)參數(shù)n取值為2,當(dāng)調(diào)用函數(shù)書(shū)寫(xiě)為power(1)時(shí),相當(dāng)于調(diào)用power(5,2)。注:必選參數(shù)在前,可選參數(shù)在后,默認(rèn)值不是最后一個(gè)需指定參數(shù)名

def enroll(name, gender, age=6, city="Beijing"):
    ...
enroll("Sarah", "F")
enroll("Bob", "M", 7)
enroll("Adam", "M", city="Tianjin")

注:默認(rèn)參數(shù)最好指向不變對(duì)象,如str,int,None
可變參數(shù):傳入?yún)?shù)個(gè)數(shù)可變,參數(shù)用*numbers表示,此刻參數(shù)numbers接收到一個(gè)tuple類(lèi)型數(shù)據(jù)

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
calc(1,2,3,4)
#若已有一個(gè)tuple或list,則可以用`clac(*nums)`調(diào)用
nums = [1,2,3]
clac(*nums)

關(guān)鍵字參數(shù):傳入任意個(gè)參數(shù)person("Bob", 35, city="Beijing",job="Engineer"),這些關(guān)鍵字自動(dòng)組裝為一個(gè)dict,person(name,age,**kw),此刻dict為{"gender": "M", "job": "Engineer"}

def person(name, age, **kw):
    print("name:", name, "age:", age, "other:", kw)
person("Adam", 45, gender="M", job="Engineer")
#若已有一個(gè)dict,可用person(**extra)調(diào)用
extra = {"city": "Beijing", "job": "Engineer"}
person("Jack", 24, **extra)

6.5 遞歸函數(shù)

def fact(n):
    if n==1:
        return 1
    else:
        return n*fact(n-1)

棧溢出:計(jì)算機(jī)里函數(shù)調(diào)用是通過(guò)棧完成,調(diào)用一個(gè)函數(shù)棧加一個(gè)棧幀,調(diào)用完成減一個(gè)棧幀,如果遞歸太多次會(huì)導(dǎo)致棧溢出
尾遞歸:為了防止棧溢出,就可以采取尾遞歸方式,即每次函數(shù)返回時(shí)調(diào)用函數(shù)自身,這樣無(wú)論遞歸多少次都只占用一個(gè)棧幀

def fact2(n):
    return fact2_iter(n,1)
def fact2_iter(n,product):
    if n==1:
        return product
    else:
        return fact2_iter(n-1,product*n)

理論上只要解釋優(yōu)化后尾遞歸不會(huì)出現(xiàn)棧溢出,但是目前大多數(shù)解釋器包括python解釋器并沒(méi)有進(jìn)行解釋器優(yōu)化。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/42549.html

相關(guān)文章

  • Python入門(mén)資料大全(更新ing)

    摘要:在線挑戰(zhàn),還沒(méi)用過(guò),貌似現(xiàn)在對(duì)英文資料心里還有種抵觸,必須克服實(shí)驗(yàn)樓研發(fā)工程師包含了等學(xué)習(xí)課程。書(shū)的作者就是開(kāi)發(fā)了用于數(shù)據(jù)分析的著名開(kāi)源庫(kù)的作者英文資料,對(duì)數(shù)據(jù)分析中要用到的一些庫(kù),等等做了簡(jiǎn)要介紹。形式的資料,示例代碼都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、說(shuō)明 面對(duì)網(wǎng)絡(luò)上紛繁復(fù)雜的資...

    wuaiqiu 評(píng)論0 收藏0
  • Python貓薦書(shū)系列之七:Python入門(mén)書(shū)籍有哪些?

    摘要:正好,最近又有幾位不同身份的初學(xué)者來(lái)咨詢,要我推薦幾本入門(mén)書(shū)籍,而我們薦書(shū)系列已經(jīng)停更了兩個(gè)多月,所以,本期薦書(shū)就來(lái)推薦一些入門(mén)書(shū)籍吧。為了準(zhǔn)備這期薦書(shū),我專(zhuān)門(mén)搜集了本入門(mén)書(shū)籍,現(xiàn)在全部加入到了一份豆瓣豆列里,方便大家查看。 showImg(https://segmentfault.com/img/remote/1460000019299066?w=4790&h=3193); 本文原創(chuàng)...

    Joyven 評(píng)論0 收藏0
  • 給伸手黨的福利:Python 新手入門(mén)引導(dǎo)

    摘要:如果你仍然無(wú)法抉擇,那請(qǐng)選擇,畢竟這是未來(lái)的趨勢(shì),參考知乎回答還是編輯器該如何選我推薦社區(qū)版,配置簡(jiǎn)單功能強(qiáng)大使用起來(lái)省時(shí)省心,對(duì)初學(xué)者友好。 這是一篇 Python 入門(mén)指南,針對(duì)那些沒(méi)有任何編程經(jīng)驗(yàn),從零開(kāi)始學(xué)習(xí) Python 的同學(xué)。不管你學(xué)習(xí)的出發(fā)點(diǎn)是興趣驅(qū)動(dòng)、拓展思維,還是工作需要、想要轉(zhuǎn)行,都可以此文作為一個(gè)參考。 在這個(gè)信息爆炸的時(shí)代,以 Python入門(mén) 為關(guān)鍵字搜索出...

    用戶84 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<