Python基础知识一
本章內(nèi)容:
- Python 的種類
- Python 的環(huán)境
- Python 入門(解釋器、編碼、pyc文件、腳步傳入?yún)?shù)、變量、輸入、流程控制與縮進(jìn)、while循環(huán))
- 練習(xí)題
| Python 的種類 |
- Cpython
Python的官方版本,使用C語言實(shí)現(xiàn),使用最為廣泛,CPython實(shí)現(xiàn)會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。
- Jyhton
Python的Java實(shí)現(xiàn),Jython會(huì)將Python代碼動(dòng)態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行。
- IronPython
? ? Python的C#實(shí)現(xiàn),IronPython將Python代碼編譯成C#字節(jié)碼,然后在CLR上運(yùn)行。(與Jython類似)
- PyPy(特殊)
Python實(shí)現(xiàn)的Python,將Python的字節(jié)碼字節(jié)碼再編譯成機(jī)器碼。
- RubyPython、Brython ...
Python的對(duì)應(yīng)關(guān)系和執(zhí)行流程如下:
PyPy 在Python的基礎(chǔ)上對(duì)Python的字節(jié)碼進(jìn)一步處理,從而提升執(zhí)行速度!
?
| Python 的環(huán)境 |
Windows:
下載地址:https://www.python.org/downloads/
Linux:
自帶python環(huán)境
?| 1 2 3 4 5 6 | #python -V 查看python版本 nick-suo@ubuntu:~$ python -V Python 2.7.6 nick-suo@ubuntu:~$ python3 -V Python 3.4.0 nick-suo@ubuntu:~$ |
更新python環(huán)境
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1、安裝gcc,用于編譯Python源碼 ????yum install gcc 2、下載源碼包,https://www.python.org/ftp/python/ 3、解壓并進(jìn)入源碼文件 4、編譯安裝 ????./configure ????make all ????make install 5、查看版本 ????/usr/local/bin/python2.7 -V 6、修改默認(rèn)Python版本 ????mv /usr/bin/python /usr/bin/python2.6 ????ln -s /usr/local/bin/python2.7 /usr/bin/python 7、防止yum執(zhí)行異常,修改yum使用的Python版本 ????vi /usr/bin/yum ????將頭部 #!/usr/bin/python 修改為 #!/usr/bin/python2.6 |
?
| Python 入門 |
一、'Hello World!'
?| 1 2 3 4 5 | #python2的寫法 print "Hello World!" #python3的寫法 print("Hello World!") |
二、執(zhí)行(解釋器)、退出
明確的指出 hello.py 腳本由 python 解釋器來執(zhí)行。
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | nick-suo@ubuntu:/blogs$ cat hello.py #!/usr/bin/env python print("Hello World!") nick-suo@ubuntu:/blogs$ sudo chmod +x hello.py? nick-suo@ubuntu:/blogs$ ./hello.py Hello World! nick-suo@ubuntu:/blogs$ ######################### 程序可以通過拋出SystemExit異常來請(qǐng)求退出。 >>> raise SystemExit |
三、編碼
python解釋器在加載 .py 文件中的代碼時(shí),會(huì)對(duì)內(nèi)容進(jìn)行編碼(默認(rèn)ascill)
ASCII(American Standard Code for Information Interchange,美國標(biāo)準(zhǔn)信息交換代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語和其他西歐語言,其最多只能用 8 位來表示(一個(gè)字節(jié)),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個(gè)符號(hào)。
顯然ASCII碼無法將世界上的各種文字和符號(hào)全部表示,所以,就需要新出一種可以代表所有字符和符號(hào)的編碼,即:Unicode
Unicode(統(tǒng)一碼、萬國碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,規(guī)定雖有的字符和符號(hào)最少由 16 位來表示(2個(gè)字節(jié)),即:2 **16 =?65536,
注:此處說的的是最少2個(gè)字節(jié),可能更多
UTF-8,是對(duì)Unicode編碼的壓縮和優(yōu)化,他不再使用最少使用2個(gè)字節(jié),而是將所有的字符和符號(hào)進(jìn)行分類:ascii碼中的內(nèi)容用1個(gè)字節(jié)保存、歐洲的字符用2個(gè)字節(jié)保存,東亞的字符用3個(gè)字節(jié)保存...
告訴python解釋器,用什么編碼來執(zhí)行代碼:
?| 1 2 3 4 5 6 7 8 | nick-suo@ubuntu:/blogs$ cat hello.py #!/usr/bin/env python #-*- coding:utf-8 -*- print("你好 世界!") nick-suo@ubuntu:/blogs$ python3 hello.py 你好 世界! nick-suo@ubuntu:/blogs$ |
四、注釋
單行注釋:#Nick
多行注釋:'''Nick'''
?| 1 2 3 4 5 6 7 | #Nick ''' Nick Nick Nick ''' |
五、pyc文件
執(zhí)行Python代碼時(shí),如果導(dǎo)入了其他的 .py 文件,那么,執(zhí)行過程中會(huì)自動(dòng)生成一個(gè)與其同名的 .pyc 文件,該文件就是Python解釋器編譯之后產(chǎn)生的字節(jié)碼。
?| 1 2 3 | nick-suo@ubuntu:/blogs$ ls a.py* a.py? a.pyc nick-suo@ubuntu:/blogs$ |
六、腳步傳入?yún)?shù)
Python有大量的模塊,從而使得開發(fā)Python程序非常簡潔。類庫有包括三中:
- Python內(nèi)部提供的模塊
- 業(yè)內(nèi)開源的模塊
- 程序員自己開發(fā)的模塊
Python內(nèi)部提供一個(gè) sys 的模塊,其中的 sys.argv 用來捕獲執(zhí)行執(zhí)行python腳本時(shí)傳入的參數(shù)
?| 1 2 3 4 5 6 | #!/usr/bin/env python #-*- coding:utf-8 -*- import sys print("sys.argv") |
七、變量
1、聲明變量
?| 1 2 3 4 5 | #!/usr/bin/env python #-*- coding:utf-8 -*- #聲明變量name,值為"Nick" name = "Nick" |
變量的作用:昵稱其代指內(nèi)存里某個(gè)地址中保存的內(nèi)容
?
變量定義的規(guī)則:
- 變量名只能是 字母、數(shù)字或下劃線的任意組合
- 變量名的第一個(gè)字符不能是數(shù)字
- 以下關(guān)鍵字不能聲明為變量名
- ['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、變量的賦值
?| 1 2 3 4 5 | #!/usr/bin/env python #-*- coding:utf-8 -*- name1 = "Nick" name2 = "Suo" |
?
| 1 2 3 4 5 | #!/usr/bin/env python #-*- coding:utf-8 -*- name1 = "Nick" name2 = name1 |
八、輸入
輸入用戶名
?| 1 2 3 4 5 6 7 8 9 10 | #!/usr/bin/env python #-*- coding:utf-8 -*- #將用戶輸入的內(nèi)容賦值給name變量 name = raw_input("請(qǐng)輸入用戶名:") print name #python3的寫法 name = input("請(qǐng)輸入用戶名:") print(name) |
輸入密碼時(shí),如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
?| 1 2 3 4 5 6 7 | #!/usr/bin/env python #-*- coding:utf-8 -*- import getpass pwd = getpass.getpass("請(qǐng)輸入密碼:") print(pwd) |
?九、流程控制與縮進(jìn)
用戶登錄驗(yàn)證與輸出相應(yīng)內(nèi)容
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/usr/bin/env python #-*- coding:utf-8 -*- import getpass name = input("請(qǐng)輸入用戶名:") pwd = getpass.getpass("請(qǐng)輸入密碼:") if name == "nick" and pwd == "nick": ????print("Welcome, nick.") elif name == "Suo" and pwd == "Suo": ????print("Welcome, Suo.") elif name == "test": ????print("Hi, test.") else: ????print("Sorry, please try angin.") |
十、while循環(huán)
1、基本循環(huán)
?| 1 2 3 4 5 6 | while 條件: ?????? ????# 循環(huán)體 ?? ????# 如果條件為真,那么循環(huán)則執(zhí)行 ????# 如果條件為假,那么循環(huán)不執(zhí)行 |
2、break
break 用于退出當(dāng)層循環(huán)
?| 1 2 3 4 5 6 7 8 9 | #!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: ????print(num) ????num+=1 ????break ????print("end") |
3、continue
continue 用于退出當(dāng)前循環(huán),繼續(xù)下一次循環(huán)
?| 1 2 3 4 5 6 7 8 9 | #!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: ????print(num) ????num+=1 ????continue ????print("end") |
?
| 練習(xí)題 |
求1-2+3-4+5 ... 99的所有數(shù)的和
方法一:
?| 1 2 3 4 5 6 7 8 9 10 11 | num = 1 num2 = 2 num3 = num - num2 while True: ????num+=2 ????num2+=2 ????num3 = num3 + num ????if num == 99: ????????break ????num3 = num3 - num2 print(num3) |
方法二:
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | sum = 1 s = 0 while True: ????s = s + sum ????if sum == 99: ????????break ????sum+=2 sum1 = 0 s1 = 0 while True: ????s1 = s1 + sum1 ????if sum1 == 98: ????????break ????sum1 += 2 print(s - s1) |
方法三:
?| 1 2 3 4 5 6 7 8 9 10 | sum = 0 start = 1 while start < 100: ????temp = start % 2 ????if temp == 1: ????????sum = sum +start ????else: ????????sum = sum - start ????start += 1 print(sum) |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | s = "" sum = 0 start = 1 while start < 100: ????temp = start % 2 ????if temp == 1: ????????if start == 1: ????????????s = str(start) ????????else: ????????????s = s + "+" + str(start) ????????sum = sum +start ????else: ????????s = s + "-" + str(start) ????????sum = sum - start ????start += 1 print(s) print(sum) |
方法四:
?| 1 2 3 4 5 6 | sum=1 s=0 while sum<100: ????s=s+sum*(-1)**(sum+1) ????sum+=1 print(s) |
方法五:
?| 1 2 | #排除99,剩余49組1-2 print(49*(1-2)+99) |
?
轉(zhuǎn)載于:https://www.cnblogs.com/gaidy/p/10531153.html
總結(jié)
以上是生活随笔為你收集整理的Python基础知识一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高并发整体可用性:大规模集群下的分片管理
- 下一篇: 64岁Python之父:我不退休了,我要