在後面的操做中,主要以python 3.4 版本爲主:python
Python腳本執行linux
1 | 在linux 下建立一個文件叫hello.py,並輸入: |
2 | print("hello world ") |
3 | 而後執行命令:python hello.py ,輸出: |
4 | $ python hello.py |
5 | Hello World! |
指定解釋器程序員
上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。sql
若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py
,那麼就須要在 hello.py 文件的頭部指定解釋器shell
1 | #!/usr/bin/python env |
2 | print ("hello world") |
執行前:chmod +x hello.pywindows
就能夠以下執行:./hello.py 便可。測試
在交互器中執行編碼
能夠直接調用python自帶的交互器運行代碼 :spa
一、聲明變量:設計
#_*_coding:utf-8_*_ |
name = 'Chen" |
print name |
解析:#_*_coding:utf-8_*_ 指定字符編碼 ,name 爲變量名, 變量名的值爲:「Chen」 ;print 打印
二、變量的賦值:
1 | name = "chen" |
2 | name2 = name |
3 | |
4 | print ("一、" ,name,name2) |
5 | |
6 | name = "ChcnChangQing" |
7 | print ( "二、",name,name2) |
結果打印:
解析:給name 賦一個值常量固定值,name2等於name 的值,同時python內存池也給name 分配了一個模塊值, name、name2的指針指向同一個值。 因此第一次打印,name、name2的值是同樣的;第二次從新指定name的值是,python會劃分一個地址池,name的指針發生改變指向新的地址池,這個時候name2並不會隨着name的改變而改變,仍是指向原理的地址池。因此第二次打印出來的結果值,name與name2不同。
三、變量定義規則:
['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']
四、字符編碼與二進制:
A、數字與二進制的換算:
描述:定位數字的值,往前去累加。噹噹前數值大於排列數字就在下方標1 如:165 小於256 大於128,因此在128下標1,再往前推算,排列的數據小於剩下的數值 (165-128),下方標零,截止排列數據的和等於165=128+32+4+1,從中推算出二進制爲:10100101
B、字符編碼
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認Ascill)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。
關於中文的發展(摘錄):
爲了處理漢字,程序員設計了用於簡體中文的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、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。
有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼
ASCII碼沒法將世界上的各類文字和符號所有表示,因此新出一種能夠表明全部字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),以下代碼:
報錯:Ascii碼沒法表示中文
1
2
3
|
#!/usr/bin/env python
print
"你好,世界"
|
改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:
1
2
3
4
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print
"你好,世界"
|
一、註釋分兩種:
舉例:能夠利用多行註釋,進行多行打印 :(博客園添加不了表格。。。。)
example = """
執行效果:
二、 用戶輸入:Iput使用
A、 格式化輸出的幾種形式
備註:+ 號拼接;%s/%d/%f 賦值 ; format 賦值; 使用{} 按照數字值拼接。舉例以下:
a、+號的拼接:
舉例:
結果:
解析:一個個字段的相加打印
b、% 賦值(%就至關於shell中的$)
舉例:
結果:
解析:%s 針對於字符串,若是是是int 類型對應的是 %d,浮點數爲 %f。注意數據類型的轉換。
判斷一個值的類型 type('值') ,會得出這個值的類型 <type 'str'> 。str 字符串、int 數字、dict 字典、 list 列表
舉例:
print type(name)
返回結果
<type 'str'> 得出參數值的類型爲字符串
c、 format 賦值
舉例:
結果:
解析:使用format賦值,不用考慮數據類型
d、 使用{} 按照數字順序拼接
舉例:
結果:
B、使用getpass模塊隱藏密碼輸入
舉例:密碼可見
結果:
舉例:密碼不可見 (使用getpass)
1
|
#/usr/bin/env python
|
2 |
#--*-- code:utf-8 --*--
|
3
|
|
4 | import getpass |
5 | username = input("name:") |
6 | |
7 | password = getpass.getpass("請輸入密碼:") |
8 | |
9 | print (username,password) |
結果:
1 | 找到執行所在的目錄 |
2 | C:\Users\chen>cd /d D:\python\51CTO\day1 |
3 | 執行文件、輸入用戶名、輸入密碼、並打印 |
4 | D:\python\51CTO\day1>python hello.py |
5 | name:chen |
6 | passwd: |
7 | ('chen', 'chen') |
getpass 有待驗證,在PyCharm中測試不成功。須要在liunx 系統中、window系統的cmd中驗證。
C、Input 在 python2與python3 中的區別:
python2 有input\raw_input;pyhton3 只有Input。py2 中的raw_input功能等同於py3中的input。要避免在PYthon2 中使用Input ,raw_input與及python3中input 輸入的永遠是字符串。
Pyhton2 的Input輸入的是什麼格式,就是什麼格式。在PY2中的測試:
舉例:錯誤
print name
返回結果:
執行結果:Abc 沒有被定義
舉例:改正 (把Abc給定義一個數值)
返回結果:
name:Abc
123456
輸入Abc 把 Abc 的值給打印出來。結論:Python2 中要使用Input 要先把輸入值給定義好。
一、判斷用戶登陸驗證
舉例 if..else 結構:
結果:
錯誤打印
正確打印
二、猜數字:
舉例 if..elif..else 結構:
#定義固定數字
結果:
The number is bigger!
一、死循環模式
舉例:
1 | #定義計數器 |
2 | count = 0 |
3 | while True: |
4 | print("count:",count) |
5 | #count += 1 等同於count = count + 1,計算步長 |
6 | count +=1 |
結果無限打印,環境中杜絕死循環。
二、簡單的從0打印到5:
舉例:
1 | #定義計數器 |
2 | count = 0 |
3 | while count < 6: |
4 | print("count",count) |
5 | count +=1 |
結果:
1 | count: 0 |
.. | .. |
三、接着猜數字:要求只容許用戶猜三次,要求猜對直接退出。三次都都猜不對,打印文字告知用戶錯誤。
舉例:
結果:
四、接着上面的列子,猜數字。猜夠三次還想繼續玩:
舉例:
結果:
rang(10) #表示從零開始計算打印10個數:0-9
rang(1,10) # 表示從1開始打印,打印:1-9
rang(1,10,3) #表示從1開始打印,相隔3個數字打印一次,數字小於10
舉例:
輸出:
循環中break and continue 的用法
備註:break結束本次循環、continue跳出本次循環進入下次循環。
一、遇到小於6的循環次數就不走了,直接跳入下一次循環
輸出:
number1 7
二、遇到大於4 的循環次數就不走了,直接退出
輸出:
做業一:編寫登錄接口
經過其餘的方方式編寫