国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python入門

xeblog / 1453人閱讀

摘要:零預備知識字符編碼計算機只能處理數字,所以為文本需要轉化為數字才能被計算機處理,計算機里八個比特作為一個字節,這是數據的存儲基礎單位。

零、預備知識

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

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

Unicode碼:所有語言都統一在一套編碼里;一般2個字節,生僻字4個字節;在ASCII碼前補0就行

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

計算機內存統一使用Unicode編碼,保存在硬盤(例如文件保存)里或網絡傳輸時轉換為UTF-8編碼

一、簡介

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

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

python一般用于實現應用程序,如算法,網站后臺,在線游戲后臺,c語言一般用于底層的接近硬件的開發如操作系統,java一般用于網站開發和Android,swift/objective-c主要用于iPhone開發

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

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

1.1 優點:

代碼量少

有豐富的基本庫和第三方庫,基本代碼庫包含網絡,GUI,數據庫,文件,文本等方面

1.2 缺點:

程序運行時間長

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

1.3 適用方面:

日常小工具

網絡應用,如網絡后臺,在線游戲

封裝其他語言完成的程序

二、安裝python

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

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

2.1 安裝步驟:

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

進入命令行交互環境:在windows系統下打開cmd命令行提示符窗口,提示符類似c:>

進入python交互環境:在命令行提示符窗口里輸入python,出現提示符>>>,這就表明已經進入python交互運行環境,然后就可以輸入python代碼,回車則執行

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

2.2 python解釋器:

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

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

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

pypy: 采用JIT技術,對Python代碼進行動態編譯(注意不是解釋),執行程序結果可能和CPython不同

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

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

三、第一個python程序

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

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

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

>>>100+200
300

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

在打代碼時可以一邊在文本編輯器里編輯,一邊粘貼到Python交互環境里進行調試。

四、Python基礎

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類型需要函數int(),news=int(s)

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

4.3 基礎

注釋:#注釋

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

縮進: 縮進為四個空格

Python嚴格大小寫

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

4.4 數據類型

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

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

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

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

"        "
"       "
        

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

字符串常用函數:ord("字符")獲得字符編碼的十進制表示;chr("編碼")獲得編碼對應函數;len("字符串")計算字符串的字符數,len(b"byte")計算byte字節數

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

字符串格式化:,可以用占位符或format()函數進行格式化,%d整數(%2d表示長度為2,%02d表示長度為2,不足補零),%f浮點數(%.2f表示保留兩位小數),%s字符串(可以將任何類型數據轉換為字符串),%x十六進制整,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編碼;占多個字節;‘’;用encode(編碼方式名)編碼
磁盤和網絡中:byte類型;ASCII編碼和utf-8編碼;占一個字節;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
非零數值,非空字符串,非空list都是true

空置:None

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

聲明:s=set([1,2,3,3]) //重復元素自動變為一個,s為{1,2,3}
添加:s.add(4)
刪除:s.remove(4)
交集并集:s1&s2 s1|s2  //和數學的交集并集一樣

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

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

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

自定義

4.5 變量

變量名:數字,大小字母,_,不能數字開頭

同一變量可以反復賦值,無論賦值類型

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

4.6 常量

python沒有固定常量,默認用大寫的變量名表示常量

五、語句

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

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

5.2 循環語句
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:條件滿足,就不斷循環,條件不滿足時退出循環

while n > 0:
    sum = sum + n

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

六、函數

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

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

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

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

在python交互環境里定義,會出現...,定義完畢后輸入兩次回車出現提示符,即可執行
如果函數定義在文件new.py里,則可以用命令行python new import 函數名導入函數,然后再執行
空函數:用pass占位,也可用于if代碼塊里

def nop():
    pass

參數檢查:python可以檢查內置函數參數個數和類型,自定義函數只能檢查個數,類型需要用isinstace()自定義檢查

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

返回多個參數:函數返回多個參數return a,b,實際是返回一個tuple類型數據,如果函數賦給多個變量c,d = new(1,2),則是將函數返回的tuple類型數據依次賦給c,d;如果函數賦給一個變量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 函數參數
默認參數:power(x,n=2)默認參數n取值為2,當調用函數書寫為power(1)時,相當于調用power(5,2)。注:必選參數在前,可選參數在后,默認值不是最后一個需指定參數名

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

注:默認參數最好指向不變對象,如str,int,None
可變參數:傳入參數個數可變,參數用*numbers表示,此刻參數numbers接收到一個tuple類型數據

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

關鍵字參數:傳入任意個參數person("Bob", 35, city="Beijing",job="Engineer"),這些關鍵字自動組裝為一個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)調用
extra = {"city": "Beijing", "job": "Engineer"}
person("Jack", 24, **extra)

6.5 遞歸函數

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

棧溢出:計算機里函數調用是通過棧完成,調用一個函數棧加一個棧幀,調用完成減一個棧幀,如果遞歸太多次會導致棧溢出
尾遞歸:為了防止棧溢出,就可以采取尾遞歸方式,即每次函數返回時調用函數自身,這樣無論遞歸多少次都只占用一個棧幀

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)

理論上只要解釋優化后尾遞歸不會出現棧溢出,但是目前大多數解釋器包括python解釋器并沒有進行解釋器優化。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42549.html

相關文章

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

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

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

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

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

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

    用戶84 評論0 收藏0

發表評論

0條評論

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