第一階段Python學習:1、基礎知識、if語句、循環
本文內容:
一、Python介紹級應用方向
二、Python 特性
三、hello world 程序
四、Python 格式化輸出
五、變量、數據類型、註釋
六、表達式if...else
七、表達式while loop
八、表達式for loop
一、Python介紹及應用方向
python的創始人為吉多·範羅蘇姆(Guido van Rossum)。
1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。 Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。
Python可以應用於眾多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!Facebook、NASA、百度、騰訊、汽車之家、美團等。
Python的優缺點
先看優點
- Python的定位是“優雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復雜的程序。
- 開發效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大降低開發周期,避免重復造輪子。
- 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
- 可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴於系統的特性,那麽你的所有Python程序無需修改就幾乎可以在市場上所有的系統平臺上運行
- 可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
再看缺點:
- 速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裏所指的運行速度慢在大多數情況下用戶是無法直接感知到的,必須借助測試工具才能體現出來,比如你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種情況下,當然還是建議你用C去實現的。
- 代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現。
- 線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任何時刻僅有一個線程在執行,Python的線程是操作系統的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即使在多核CPU平臺上,由於GIL的存在,所以禁止多線程的並行執行。關於這個問題的折衷解決方法,我們在以後線程和進程章節裏再進行詳細探討。
Python解釋器
當我們編寫Python代碼時,我們得到的是一個包含Python代碼的以.py
為擴展名的文本文件。要運行代碼,就需要Python解釋器去執行.py
文件。
由於整個Python語言從規範到解釋器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python解釋器來執行Python代碼(當然難度很大)。事實上,確實存在多種Python解釋器。
CPython
當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python
就是啟動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執行。
IPython
IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE。
CPython用>>>
作為提示符,而IPython用In [
序號
]:
作為提示符。
PyPy
PyPy是另一個Python解釋器,它的目標是執行速度。PyPy采用JIT技術,對Python代碼進行動態編譯(註意不是解釋),所以可以顯著提高Python代碼的執行速度。
絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。
Jython
Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節碼執行。
IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節碼。
目前Python主要應用領域:
- 雲計算: 雲計算最火的語言, 典型應用OpenStack
- WEB開發: 眾多優秀的WEB框架,眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系統運維: 運維人員必備語言
- 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤其擅長策略回測
- 圖形GUI: PyQT, WxPython,TkInter
二、Python 特性
Python是一種解釋性的語言
其他語言的類型:
編譯型vs解釋型
編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。
解釋型
優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
三、hello world 程序
創建文件,命名hello.py,並輸入
1 print("Hello World!")
然後再執行 python hello.py,就可輸出
1 localhost:~ jieli$ vim hello.py 2 localhost:~ jieli$ python hello.py 3 Hello World!
上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
如果想要類似於執行shell腳本一樣執行python腳本,例: ./hello.py
,那麽就需要在 hello.py 文件的頭部指定解釋器,如下:
#!/usr/bin/env python # env:顯示當前用戶的環境變量 print ("Hello,World!")
如此一來,執行: ./hello.py
即可。
ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py
四、Python 格式化輸出
python print格式化輸出。
%f 浮點數
%d 整數
%s 字符串
1. 打印字符串
print ("My name is %s"%("Honour"))
效果:
2.打印整數
print ("I‘m %d years old"%(28)))
效果:
3.打印浮點數
print ("My height is %f m"%(1.94))
效果:
4.打印浮點數(指定保留小數點位數)
print ("My height is %.2f m"%(1.94))
效果:
5.指定占位符寬度
print ("Name:%10s Age:%8d Height:%8.2f"%("Honour",28,1.94))
效果:
6.指定占位符寬度(左對齊)
print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))
效果:
7.指定占位符(只能用0當占位符)
print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))
效果:
8.科學計數法
format(0.0015,‘.2e‘)
效果:
五、變量、數據類型、註釋
Variables are used to store information to be referenced and manipulated in a computer program. They also provide a way of labeling data with a descriptive name, so our programs can be understood more clearly by the reader and ourselves. It is helpful to think of variables as containers that hold information. Their sole purpose is to label and store data in memory. This data can then be used throughout your program.
引用變量是用來存儲信息和操作在一個計算機程序。他們還提供一種標簽數據與一個描述性的名稱,所以我們的程序可以被讀者和我們自己更清楚地理解。它有助於認為變量保存信息的容器。他們的唯一目的是標簽和數據存儲在內存中。這些數據可以使用您的程序。(from baidu translation)
聲明變量
1 # -*- coding: utf-8 -*- 2 3 name = "Honour"
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"Alex Li"
變量定義的規則:
- 變量名只能是 字母、數字或下劃線的任意組合
- 變量名的第一個字符不能是數字
- 以下關鍵字不能聲明為變量名
[‘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‘]
變量的賦值
1 #變量的賦值 2 3 name = "Honour" 4 name2 = name 5 print("hello world!",name,name2) 6 7 name="Janice" 8 9 print("hello world!",name,name2)
直行結果
1 hello world! Honour Honour 2 3 hello world! Janice Honour
六、表達式if...else
練習一、用戶名登錄驗證
1 #if else 判斷語句 2 # 驗證用戶名和密碼 3 # 如果錯誤,則輸出 Invalid username or password! 4 # 如果成功,則輸出 Welcomme user XXX! 5 6 7 import getpass #調用密文(不能在 pycharm中執行) 8 9 _username = "honour" #定義變量,帳號和密碼 10 _password = "26904001" 11 12 13 username = input("username:") #input等待鍵入 14 15 password = getpass.getpass("password:") #密文輸入密碼 16 17 #password = input("password:") 18 19 if _username==username and _password == password: 20 print ("Welcomme user {name} login..".format(name=username)) 21 22 else: 23 print("Invalid username or password!")
練習二:
猜年齡,用戶輸入年齡,根據他的輸入提示用戶輸入的是否正確,如果錯誤,提示是猜大了還是小了
1 #猜年齡 2 #用戶輸入年齡,根據他的輸入提示用戶輸入的是否正確,如果錯誤,提示是猜大了還是小了 3 4 5 age_of_honour=28 #定義年齡變量 6 7 guess_age = int(input("guess age:" ) ) #定義用戶輸入的年齡變量,將其轉換成整數,以待對比 8 if guess_age == age_of_honour : 9 print("yes,you are right") 10 elif guess_age > age_of_honour: 11 print("bigger!") 12 else: 13 print("smaller!")
七、表達式while loop
Python 編程中 while 語句用於循環執行程序,即在某條件下,循環執行某段程序,以處理需要重復處理的相同任務。其基本形式為:
1 while 判斷條件: 2 執行語句……
流程圖
海枯石爛
1 #while True 判定為真則打印xxx,如果沒有break,將一直打印 2 3 count = 0 4 while True: 5 print("海枯石爛也不停息...",count) 6 count +=1
給海枯石爛個終點
1 count = 0 2 while True: 3 print("海枯石爛也不停息...",count) 4 count +=1 5 if count == 100: #if break 滿足if條件後跳出while循環 6 print("滄海桑田...stop") 7 break
擴展:
#猜年齡升級 #每猜三次,詢問用戶是否繼續,輸入指定字符則停止循環 age_of_honour=28 count =0 while count <3: # while循環 條件(count<3) ,True 為死循環 guess_age = int(input("guess age:" ) ) if guess_age == age_of_honour : print("yes,you are right") elif guess_age > age_of_honour: print("smaller..") else: print("bigger!") if guess_age == age_of_honour: break # 結束整個循環 count +=1 #每次loop 計數器+1 if count ==3 : countine_confirm = input ("do you wang to guessing.(If the input N the end)") if countine_confirm !=‘n‘: count=0 print(count) else: # while 循環如果被 break 所結束,不執行該語句 print("you are wrong")
八、表達式for loop
Python for循環可以遍歷任何序列的項目,如一個列表或者一個字符串。
for iterating_var in sequence: #iterating_var 變量 sequence 序列 statements(s)
示例1
1 for letter in ‘Python‘: # 第一個實例 2 print (‘當前字母 :‘, letter) 3 4 fruits = [‘banana‘, ‘apple‘, ‘mango‘] 5 for fruit in fruits: # 第二個實例 6 print( ‘當前水果 :‘, fruit) 7 8 print("Good bye!")
實力2
1 for i in range (0,100,2): #‘0’起始值;‘100’結束值;‘2’步長 2 if i<50: #判定 3 print("loop",i) 4 else: 5 continue #跳出本次循環進入下一起循環 6 print("stop..") #執行50次之後就不再打印
第一階段Python學習:1、基礎知識、if語句、循環