Python--2 入门
Python?2.x與3.x 版本簡介
?
目前市場上有兩個Python的版本并存著, 分別是Python 2.x和Python3.x
新的Python程序建議侂用Python 3創版本的語法
?
? Python 2.x是過去的版本
o 解釋器名稱是 python
? Python 3.x是現在和未來主流的版本
?o 解釋器名稱是python3
?o 相對于Python的早期版本, 這是一個較大的升級
?o 為了不帶入過多的累贅, Python 3.0在設計的時候沒有考慮向下兼容
?
. 許多早期Python版本設計的程序都無法在Python3.0上正常執行
?
o Python 3.0發布于2008年
o 到目前為止, Python3.0的穩定版本已經有很多年了
?
? Python 3.3發布于2012
? ? Python 3.4發布于2014
? ? Python 3.5發布于2015
?
. 為了照顧現有的程序, 官方提供了一個過渡版本-- Python 2.6
? o 基本使用了Python 2.x的語法和庫
? o 同時考慮了向Python3.0的遷移, 允許使用部分Python3.0的語法與函數
?
2010年中推出的Python2.7被確定為最后一個Python2.x版本
?
提示:如果開發時, 無法立即使用Python 3.0 (還有極少的第三方庫不支持 3.0 的語法), 建議先使用Python 3.0版本進行開發
?
.然后使用Python 2.6、 Python 2.7來執行, 并且做一些兼容性處理。
?解釋型語言:邊讀源程序邊執行。
?
?編譯型語言:將源代碼編譯成目標代碼后再執行,以后再執行時不需要編譯。
?
?
一、第一個python代碼 1 1 C:\Users\kongd>python 2 2 Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 3 3 Type "help", "copyright", "credits" or "license" for more information. 4 4 >>> print('hello world') 5 5 hello world 6 6 >>> 7 7 8 8 hello.py: 9 9 #!/usr/bin/python 10 10 print('hello world') View Code- #!/usr/bin/python指定解釋器(Linux)也可以使用#!/usr/bin/env python
- 兩者區別:#!/usr/bin/python是告訴操作系統執行這個腳本的時候,調用/usr/bin下的python解釋器;
- ? ??
-
- #!/usr/bin/env python這種用法是為了防止操作系統用戶沒有將python裝在默認的/usr/bin路徑里。當系統看到這一行的時候,首先會到env設置里查找python的安裝路徑,再調用對應路徑下的解釋器程序完成操作。
?
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 =?65536, 注:此處說的的是最少2個字節,可能更多 UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存... 所以,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),如果是如下代碼的話: 報錯:ascii碼無法表示中文 #!/usr/bin/env python print?"你好,世界"? 改正:應該顯示的告訴python解釋器,用什么編碼來執行源代碼,即: #!/usr/bin/env python # -*- coding: utf-8 -*- print?"你好,世界" #注意:python3 默認已經能夠支持中文,不需要設定utf8編碼。 python文件后綴一般以.py結尾。關于中文
?
為了處理漢字,程序員設計了用于簡體中文的GB2312和用于繁體中文的big5。
?
GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼范圍高字節從B0-F7,低字節從A1-FE,占用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。
?
GB2312?支持的漢字太少。1995年的漢字擴展規范GBK1.0收錄了21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字符。2000年的?GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的PC平臺必須支持GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支持GB2312。
?
從ASCII、GB2312、GBK?到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,后面的標準支持更多的字符。在這些編碼中,英文和中文可以統一地處理。區分中文編碼的方法是高字節的最高位不為0。按照程序員的稱呼,GB2312、GBK到GB18030都屬于雙字節字符集?(DBCS)。
?
有的中文Windows的缺省內碼還是GBK,可以通過GB18030升級包升級到GB18030。不過GB18030相對GBK增加的字符,普通人是很難用到的,通常我們還是用GBK指代中文Windows內碼。
?
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode
?
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode?是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,規定雖有的字符和符號最少由?16?位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多
?
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
pyc 文件 執行Python代碼時,如果導入了其他的 .py 文件,那么,執行過程中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯之后產生的字節碼。 ps:代碼經過編譯可以產生字節碼;字節碼通過反編譯也可以得到代碼。 Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:-
- Python內部提供的模塊
- 業內開源的模塊
- 程序員自己開發的模塊
- 示例:判斷用戶名密碼輸入是否正確
?創建py文件注意事項:
1、不要使用中文路徑保存文件 2、開頭指定解釋器?#!/usr/bin/env python 3、python2設置編碼?# -*- coding: utf-8 -*- 4、執行代碼 二、python變量- 程序就是用來處理數據的,而變量就是用來存儲數據的?
變量就是代表某個數據(值)的名稱。程序是用來處理數據的,而變量是用來存儲數據的。
1、聲明變量 靜態語言在聲明變量時必須指定變量類型,動態語言變量本身類型不固定。- 變量名只能是 字母、數字或下劃線的任意組合
- 變量名的第一個字符不能是數字
- 以下關鍵字不能聲明為變量名
['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、變量命名
小駝峰命名法(lower camel case):第一個單詞以小寫字母開頭,后面單詞字母大寫,比如myFile 大駝峰命名法(upper camel case):每一個單詞首字母都大寫,比如MyLoginFlag 下劃線命名:比如 file_name 1 name = 'tom' 2 3 print(id(name)) 4 print(type(name)) 5 3127464526712 6 <class 'str'> View Code?定義一個變量,為變量賦值,在內存中開辟一個空間保存變量值
最后,理解變量在計算機內存中的表示也非常重要。當我們寫:a = ‘ABC’時,Python解釋器干了兩件事情:為了更充分的利用內存空間以及更有效率的管理內存,變量是有不同的類型的,如下所示:
?怎樣知道一個變量的類型呢?
?在python中,只要定義了一個變量,而且它有數據,那么它的類型就已經確定了,不需要咱們開發者主動的去說明它的類型,系統會自動辨別
?可以使用type(變量的名字),來查看變量的類型
?
type顯示變量類型,在交互模式中輸入變量名,顯示變量值
>>> name="tom" >>> type(name) <class 'str'> >>> num=100 >>> type(num) <class 'int'> >>> list1=[1,2,3] >>> type(list1) <class 'list'> >>> tuple1=(1,2,3) >>> type(tuple1) <class 'tuple'> >>> dict1={"name":"tom","age":21} >>> type(dict1) <class 'dict'> View Code?
常量:不能變的變量,比不PI。python中,通常用全部大寫表示常量。 比如:PI表示圓周率,E表示自然常數。 三、輸入輸出?print()會依次打印每個字符串,遇到逗號“,”會輸出一個空格,因此,輸出的字符串是這樣拼起來的:
格式化輸出: 1 >>> score=100 2 >>> print("my english score is %d"%score) 3 my english score is 100 View Code??
%用法
1、整數的輸出
%o —— oct 八進制
%d —— dec 十進制
%x —— hex 十六進制
2、浮點數輸出
(1)格式化輸出
%f ——保留小數點后面六位有效數字
%.3f,保留3位小數位
%e ——保留小數點后面六位有效數字,指數形式輸出
%.3e,保留3位小數位,使用科學計數法
%g ——在保證六位有效數字的前提下,使用小數方式,否則使用科學計數法
%.3g,保留3位有效數字,使用小數或科學計數法
(2)內置round()
round(number[, ndigits])
參數:
number?- 這是一個數字表達式。
ndigits?- 表示從小數點到最后四舍五入的位數。默認值為0。
返回值
該方法返回x的小數點舍入為n位數后的值。
round()函數只有一個參數,不指定位數的時候,返回一個整數,而且是最靠近的整數,類似于四舍五入,當指定取舍的小數點位數的時候,一般情況也是使用四舍五入的規則,但是碰到.5的情況時,如果要取舍的位數前的小數是奇數,則直接舍棄,如果是偶數則向上取舍。
注:“.5”這個是一個“坑”,且python2和python3出來的接口有時候是不一樣的,盡量避免使用round()函數吧
?
3、字符串輸出
%s
%10s——右對齊,占位符10位
%-10s——左對齊,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取兩位字符串
4、 其他
(1)字符串格式代碼
(2)常用轉義字符
?
format用法
?相對基本格式化輸出采用‘%’的方法,format()功能更強大,該函數把字符串當成一個模板,通過傳入的參數進行格式化,并且使用大括號‘{}’作為特殊字符代替‘%’
位置匹配
(1)不帶編號,即“{}”
(2)帶數字編號,可調換順序,即“{1}”、“{2}”
(3)帶關鍵字,即“{a}”、“{tom}”
>>> print('{} {}'.format('hello','world')) # 不帶字段 hello world >>> print('{0} {1}'.format('hello','world')) # 帶數字編號 hello world >>> print('{0} {1} {0}'.format('hello','world')) # 打亂順序 hello world hello >>> print('{1} {1} {0}'.format('hello','world')) world world hello >>> print('{a} {tom} {a}'.format(tom='hello',a='world')) # 帶關鍵字 world hello world View Code >>> '{0}, {1}, {2}'.format('a', 'b', 'c') 'a, b, c' >>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+版本支持 'a, b, c' >>> '{2}, {1}, {0}'.format('a', 'b', 'c') 'c, b, a' >>> '{2}, {1}, {0}'.format(*'abc') # 可打亂順序 'c, b, a' >>> '{0}{1}{0}'.format('abra', 'cad') # 可重復 'abracadabra'通過位置匹配 通過位置匹配 >>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W') 'Coordinates: 37.24N, -115.81W' >>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'} >>> 'Coordinates: {latitude}, {longitude}'.format(**coord) 'Coordinates: 37.24N, -115.81W' 通過名字匹配 >>> c = 3-5j >>> ('The complex number {0} is formed from the real part {0.real} ' ... 'and the imaginary part {0.imag}.').format(c) 'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: ... def __init__(self, x, y): ... self.x, self.y = x, y ... def __str__(self): ... return 'Point({self.x}, {self.y})'.format(self=self) ... >>> str(Point(4, 2)) 'Point(4, 2)' 通過對象屬性匹配 >>> >>> coord = (3, 5) >>> 'X: {0[0]}; Y: {0[1]}'.format(coord) 'X: 3; Y: 5' >>> a = {'a': 'test_a', 'b': 'test_b'} >>> 'X: {0[a]}; Y: {0[b]}'.format(a) 'X: test_a; Y: test_b' 通過下標或key匹配?
?
#注意:pyton3 中沒有了raw_input 1 Python2中的raw_input: 2 [root@localhost ~]# python2 3 Python 2.7.5 (default, Nov 6 2016, 00:28:07) 4 [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 5 Type "help", "copyright", "credits" or "license" for more information. 6 >>> user = raw_input("please input your name: ") 7 please input your name: ZhangSan 8 >>> user 9 'ZhangSan' 10 >>> type(user) 11 <type 'str'> 12 >>> num = input("num: ") 13 num: 100+99 14 >>> num 15 199 16 >>> type(num) 17 <type 'int'> View Code??
Python2 中的input和raw_input的區別 1).在輸入字符的情況下,raw_input()會將輸入當作字符串看,返回的也是字符串類型的值,但input()會把輸入當作是一個python表達式,如果想作為字符串返回,輸入時要把輸入內容用引號括起來,很是不方便,不然就會引發一個SyntaxError 2).在輸入數字的情況下,raw_input()的返回還是str類型,面input()返回則是一個int類型,不光可以是int型,還可以是浮點型等 3).再就是,input()可以接受python表達式,輸入表達式,直接計算出結果,而raw_input()則是直接把表達式當字符串輸出 練習: 編寫代碼完成以下名片顯示要求: ====================================================== 姓名:張三 QQ:xxxxxx 手機號碼:139xxxxxxxx 郵箱: zhangsan@163.com 公司地址:西安市新城區1 #!/usr/bin/env python 2 3 #1. 提示用戶輸入信息 4 name = input("請輸入姓名:") 5 qq = input("請輸入QQ:") 6 tel = input("請輸入手機號碼:") 7 email = input("請輸入郵箱:") 8 addr = input("請輸入公司地址:") 9 10 #2. 從相應的變量中取出數據,然后進行打印 11 print("=======================") 12 print("姓名:%s"%name) 13 print("QQ:%s"%qq) 14 print("手機號碼:%s"%tel) 15 print("郵箱:%s"%email) 16 print("公司地址:%s"%addr) 17 print("=======================") 18 View Code #!/usr/bin/env python#1. 提示用戶輸入信息 name = input("請輸入姓名:") qq = input("請輸入QQ:") tel = input("請輸入手機號碼:") email = input("請輸入郵箱:") addr = input("請輸入公司地址:")#2. info變量,通過字符串拼接完成輸出 info=''' ========================== 姓名:''' + name +''' QQ:''' + qq + ''' 手機號碼:''' + tel + ''' 郵箱:''' + email + ''' 公司地址:'''+ addr + ''' ========================== '''#3. 打印 print(info) 字符串拼接方式打印 #!/usr/bin/env python#1. 提示用戶輸入信息 name = input("請輸入姓名:") qq = input("請輸入QQ:") tel = input("請輸入手機號碼:") email = input("請輸入郵箱:") addr = input("請輸入公司地址:")#2. info變量,通過%完成輸出 info=''' ========================== 姓名:%s QQ:%s 手機號碼:%s 郵箱:%s 公司地址:%s ========================== ''' %(name,qq,tel,email,addr)#3. 打印 print(info) 通過%輸出 #!/usr/bin/env python#1. 提示用戶輸入信息 name = input("請輸入姓名:") qq = input("請輸入QQ:") tel = input("請輸入手機號碼:") email = input("請輸入郵箱:") addr = input("請輸入公司地址:")#2. info變量,通過format位置匹配輸出 info=''' ========================== 姓名:{0} QQ:{1} 手機號碼:{2} 郵箱:{3} 公司地址:{4} ========================== ''' .format(name,qq,tel,email,addr)#3. 打印 print(info) 通過format位置匹配 #!/usr/bin/env python#1. 提示用戶輸入信息 name = input("請輸入姓名:") qq = input("請輸入QQ:") tel = input("請輸入手機號碼:") email = input("請輸入郵箱:") addr = input("請輸入公司地址:")#2. info變量,通過format名稱匹配輸出 info=''' ========================== 姓名:{name} QQ:{qq} 手機號碼:{tel} 郵箱:{email} 公司地址:{addr} ========================== ''' .format(name=name,qq=qq,tel=tel,email=email,addr=addr)#3. 打印 print(info) 通過format名稱匹配
?
四、基本數據類型 數字:1234 age = 22 字符串: ‘’或“” 注意:只能是英文輸入的引號。 布爾:主要用于條件判斷 True或False ? 運算符計算機可以進行的運算有很多種,可不只加減乘除這么簡單,運算按種類可分為算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天我們暫只學習算數運算、比較運算、邏輯運算、賦值運算
算數運算
以下假設變量:a=10,b=20
比較運算
以下假設變量:a=10,b=20
注意:<>是python2中的用法,python3已經移除。
賦值運算
以下假設變量:a=10,b=20
邏輯運算
?
Python成員運算符
除了以上的一些運算符之外,Python還支持成員運算符,測試實例中包含了一系列的成員,包括字符串,列表或元組
?
| 運算符 | 描述 | 實例 |
| in | 如果在指定的序列中找到值返回True,否則返回False。 | x?在?y序列中?,?如果x在y序列中返回True。 |
| not in | 如果在指定的序列中沒有找到值返回True,否則返回False。 | x?不在?y序列中?,?如果x不在y序列中返回True。 |
?
Python身份運算符
身份運算符用于比較兩個對象的存儲單元
| 運算符 | 描述 | 實例 |
| is | is是判斷兩個標識符是不是引用自一個對象 | x is y, 如果 id(x) 等于 id(y) ,?is?返回結果 1 |
| is not | is not是判斷兩個標識符是不是引用自不同對象 | x is not y, 如果 id(x) 不等于 id(y).?is not?返回結果 1 |
?
作業:
1、編寫程序,完成以下要求
1)提示用戶進行輸入數據
2)獲取用戶的數據(需要獲取2個)
3)對獲取的兩個數據進行加減乘除運算,并輸出結果
2、編寫程序,完成下列信息的輸出
=============================================
= ?????????歡迎進入到身份認證系統V1.0
= 1. 登錄
= 2. 退出
= 3. 認證
= 4. 修改密碼
=============================================
轉載于:https://www.cnblogs.com/kongd/p/7587048.html
總結
以上是生活随笔為你收集整理的Python--2 入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: App Store审核2.3被拒问题,及
- 下一篇: 从多个文件夹中读取图片 并以文件夹序号命