成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python入門

xeblog / 1465人閱讀

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

零、預(yù)備知識

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

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

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

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

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

一、簡介

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

python是一門高級的語言,其代碼行數(shù)少,因而運行時間也長。完成同樣的一個功能,c語言可能需要1000行,Java100行,python20行。

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

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

動態(tài)數(shù)據(jù)類型:python數(shù)據(jù)類型為動態(tài),不同類型變量可以相互賦值,而類似于java,c是靜態(tài)類型,聲明變量時需聲明數(shù)據(jù)類型,數(shù)據(jù)類型不同相互賦值則會報錯

1.1 優(yōu)點:

代碼量少

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

1.2 缺點:

程序運行時間長

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

1.3 適用方面:

日常小工具

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

封裝其他語言完成的程序

二、安裝python

python是跨平臺的,在windows上編寫的代碼直接搬到mac/linux上也可以運行

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

2.1 安裝步驟:

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

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

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

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

2.2 python解釋器:

我們編寫python代碼時會得到一個后綴為.py的文本,我們需要一個Python解釋器來解釋,Python解釋器包含很多版本

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

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

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

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

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

三、第一個python程序

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

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

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

>>>100+200
300

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

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

四、Python基礎(chǔ)

4.1 輸出print()

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

輸出多個字符串:print("hello,world")多個字符串用逗號隔開,輸出時逗號變成空格

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

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

4.2 輸入input()

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

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

4.3 基礎(chǔ)

注釋:#注釋

代碼塊:Python代碼每一行是一個語句(結(jié)尾不用;),語句以冒號:結(jié)尾時縮進(jìn)的代碼為代碼塊

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

Python嚴(yán)格大小寫

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

4.4 數(shù)據(jù)類型

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

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

浮點數(shù):浮點數(shù)就是小數(shù),很大的小數(shù)用科學(xué)計數(shù)法,如:2.23,-3.22,1.23e8,浮點運算可能因為四舍五入產(chǎn)生誤差,大小沒有限制,但是超過某個范圍則為inf(無限大)

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

"        "
"       "
        

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

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

>>>ord("A")
65
>>> ord("中")
20013
>>> chr(66)
"B"
>>> chr(25991)
"文"
#知道字符十六進(jìn)制表示可直接用"xxxxxx"寫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表示長度為2,%02d表示長度為2,不足補(bǔ)零),%f浮點數(shù)(%.2f表示保留兩位小數(shù)),%s字符串(可以將任何類型數(shù)據(jù)轉(zhuǎn)換為字符串),%x十六進(jìn)制整,format用{0}{1}占位

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

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

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

布爾值:FlaseTrue,運算符是and or not
非零數(shù)值,非空字符串,非空list都是true

空置:None

字典
查找插入速度快,不會隨元素增加變化,需要大量內(nèi)存,內(nèi)存浪費多
dict類型:使用健-值(key-value)存儲,可以通過key采用hash算法直接計算出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類型:一組無序的不重復(fù)的key集合,沒有vaule,需要一個list作為輸入集合,key也只能是不可變對象

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

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

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

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

自定義

4.5 變量

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

同一變量可以反復(fù)賦值,無論賦值類型

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

4.6 常量

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

五、語句

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

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

5.2 循環(huán)語句
for x in data:把list和tuple類型的data中的每個元素依次代入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),條件不滿足時退出循環(huán)

while n > 0:
    sum = sum + n

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

六、函數(shù)

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

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

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

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

在python交互環(huán)境里定義,會出現(xiàn)...,定義完畢后輸入兩次回車出現(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ù)個數(shù)和類型,自定義函數(shù)只能檢查個數(shù),類型需要用isinstace()自定義檢查

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

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

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ù)書寫為power(1)時,相當(dāng)于調(diào)用power(5,2)。注:必選參數(shù)在前,可選參數(shù)在后,默認(rèn)值不是最后一個需指定參數(shù)名

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

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

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

關(guān)鍵字參數(shù):傳入任意個參數(shù)person("Bob", 35, city="Beijing",job="Engineer"),這些關(guān)鍵字自動組裝為一個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")
#若已有一個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ī)里函數(shù)調(diào)用是通過棧完成,調(diào)用一個函數(shù)棧加一個棧幀,調(diào)用完成減一個棧幀,如果遞歸太多次會導(dǎo)致棧溢出
尾遞歸:為了防止棧溢出,就可以采取尾遞歸方式,即每次函數(shù)返回時調(diào)用函數(shù)自身,這樣無論遞歸多少次都只占用一個棧幀

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)化后尾遞歸不會出現(xiàn)棧溢出,但是目前大多數(shù)解釋器包括python解釋器并沒有進(jìn)行解釋器優(yōu)化。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42549.html

相關(guān)文章

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

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

    wuaiqiu 評論0 收藏0
  • Python貓薦書系列之七:Python入門書籍有哪些?

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

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

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

    用戶84 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<