創始人:Guido van Rossum(荷蘭人)
時間:1989年聖誕節
地點:阿姆斯特丹
應用領域:
系統運維
網絡編程(搜索引擎,爬蟲,服務器編程等)
科學計算
人工智能,機器人
web開發
雲計算
大數據及數據庫編程
教育
遊戲
圖像
版本:
python v2.3
python v2.7
python v3.5
python v3.7(最新)
python的特點:
優點:面向對象:封裝 繼承 多態,適合合作開發
(C++/JAVA/JAVA/PYTHON/SWIFT/C#)
免費
可移植
可混合編程
簡單易學易用
開發效率高
應用領域廣泛
缺點:
與C/C++相比,執行速度不夠快
python官網:
www.python.org
可查看語言文檔信息
python的安裝:
需要安裝python的解釋執行器,python不會編譯成機器語言
兼容是操作系統:
windows
linux
unix(mac os)
獲取地址:
https:www.python.org/getit/下載
-----------------------------------------------------------------------------------------------------------------------------------
2.python的運行:
python的解釋執行器(依賴於其他的解釋執行器軟件)
CPython(c語言開發)
JPython(java語言開發)
IronPython(c#語言開發)
PyPy (python語言開發)
編寫hello.py,寫入:
print("hello world!")
執行python程序:
法1: python3 hello.py
法2: 編寫hello.py 第一行加入(類比shell編程)
#!/usr/bin/python3 #解釋如下程序的名稱或路徑位置 ./shell.sh腳本文件首行必須添加此行數據
chmod u+x hello.py #添加用戶對文件hello.py的執行權限
./hello.py
常用的程序文件的後綴:
.c c語言
.cpp/.cxx/.cc/.c c++語言
.java java語言
.py python語言
在python交互模式下編寫執行代碼:
進入交互模式(進入python的解釋執行器):
$ python3 <回車>
退出交互模式:
法1:>>>exit()
法2:ctrl + d
python註釋:註釋是以 # 號開頭,直至行尾
作用:讓 # 後的字符不參與執行
python程序的組成:
程序由模塊組成
模塊由語句,函數,類等組成
語句包含表達式
表達式建立並處理對象
核心數據類型和內置對象:
數字類型,字符串str,布爾類型bool,空值None
數字類型:
正型(int)
浮點型(float)
複數(complex)
數字常量的表示方法:
整型數(python3後的整型數沒有最大限制):
十進制:100,0,-5,99999999999999999999999999999999999999999999
二進制(0b開頭):0b1101(13)
八進制(0o開頭):0o11(9)
十六進制(0x開頭):0x1A,0x1a2b3d4c
浮點數(小數):
十進制寫法:3.14,0.14,.14
科學計數法:小數 e/E 10的n次冪 6.18E-1(0.618),2.9979e8
複數complex
格式:a+bj(a實部,b虛部),1+3J
布爾類型bool(python中bool類型不是數字類型):
特點:只有兩種狀態:真 和 假
真:True
假:False
說明:對計算機來說,True是值爲1,False的值爲0
空值None:
作用:通常用來綁定佔位,變量解除綁定
特點:None是一個特殊的常量,不表示任何類型
說明:空值和任何其他類型對象進行比較永遠返回False
表達式 和運算符(操作符)
表達式:
通常是讓計算機做一些事情並返回結果法表示方法
算數運算符:
+ 加
- 減法
* 乘以
/ 除法
// 向下取整,地板除
% 求餘
** 冪運算
說明:
+-:不會強制轉換成左邊的數據類型
/:爲浮點數,整除時爲1位浮點數,不會丟棄小數部分
1/3 = 0.3333333333333
8/2 = 4.0
//:地板除floordiv
除的結果去掉小數部分,向下取整,直接丟棄小數部分,返回整數
7/3 = 2.333333333
7//3 = 2
8//3 = 2
3.25//1.5 = 2.0
說明:有浮點數參與,返回浮點數;整數與整數的地板除返回整數
思考題:-3 // 3 = -1
-5 // 3 = -2 (注意其規則是向下取整,即向小的數據取整,正負數均是如此)
%:求餘(取模):
5 % 3 = 2
3.25 % 1.5 = 0.25
-5 % 3 = 1 #這裏有個先取整的過程,向下取整先得到-2,所以-5-(-2)*3=1
x % y 的結果位於區間[0,y)
**:冪運算
4 ** 2 = 16
3.0 ** 3.0 = 27.0
運算符的優先級:
**
* / // %
+ -
括號分組子表達式:
用()將表達式分組,()內部的表達式先進行運算
基本輸出函數print
部分格式:
print(值1,值2,...)
例:
print() 輸出空行
print(1) 輸出:1
print(1,2,3,4) 輸出結果:1 2 3 4
sublime行註釋快捷鍵:ctrl+/
變量:關聯一個對象的符號(標識符)
命名方法:必須以字母或下劃線開頭,後跟字母,下劃線或數字,不能使用python的關鍵字
說明:變量名區分大小寫
合法的變量名:a a1 b bbb _a _ASD VAR
不合法的變量名:1a 123 $ad +df
python的關鍵字:True False None is del if elif else
賦值運算符:=
格式:變量名 = 表達式
作用:1.當沒有此變量時,創建一個變量,同時將變量綁定到這個對象上(a=1,沒有a就創建a,a綁定在1上,a是變量,1是對象)
2.當變量存在時,改變此變量關聯的對象(a=1,a=2,從此a表示2)
3.用變量訪問此變量關聯的對象(None是對象,一個變量同一時間只能綁定一個對象)
說明:用變量可以訪問它綁定的對象
兩個變量可以同時綁定同一個對象
python中關聯/綁定/引用:變量和一個對象的關聯關係
序列賦值語法:
變量名1,變量名2,... = 對象1,對象2,...
變量名1,變量名2,... = (對象1,對象2,...)
(變量名1,變量名2,...) = [對象1,對象2,...]
[變量名1,變量名2,...] = 對象1,對象2,...
實例:
a=10
b=20
a,b,c=10,20,30
a,b = b,a #可以交換a,b綁定的值
is / is not運算符:
is:判斷兩個變量是否綁定同一個對象,當綁定同一個對象時返回True,否則返回False
is not: 與is相反
語法:
x is y
x is not y
del:用於刪除變量,同時解除與對象的關聯,如果可能則釋放對象
格式:del 變量名1,變量名2,...
實例:
a=100
b=200
法1:a = None (a依舊是存在的)
法2:del a (a,100均消失)
檢查:在交互模式下查看當前作用域的所有變量
help()函數
>>>help("__main__") ###雙下劃線
退出鍵:q
-------------------------------------------------------------------------------------------------------------------------------------------------------
3.python函數問題1:[]表示可以省略,例如 ls [x選項] [參數]
問題2:python需要頂格寫
問題3:indentation error 表示縮進錯誤
問題4:ctrl+shift+l sublime中可以顯示多個光標(ctrl+L)
複合賦值運算符:
+= x += y 等同於 x=x+y
-= x -= y 等同於 x=x-y
*=
/=
//=
%=
**=
要求:執行此操作時變量應先存在(即先有綁定)
實例:>>>x += 1 x >>>x is not defined
>>>x=10 x += 1 x >>>11
關係運算符:
<
<=
>
>=
==
!=
說明1:關係運算符返回的布爾類型的值(True/False)
說明2:None與任何對象相比都返回False(和自己相比返回True)
實例:>>> x = None
>>> x = None
>>>x = 70 >>> 80 > x > 60 #返回x是否在(80-60)的區間
生成對象的函數:
float(obj):用於字符串或數字轉換爲浮點數,如果不能出參數,則返回0.0
int(x[,base = 10]):用數字或字符串轉換爲整數,如果不給出參數,則返回0
說明:base表示進制關係,默認十進制
bool(x):用x生成一個布爾值(True/False)
說明:返回假值False的情況:
False 邏輯假值
None 空值
0 0.0 0j 所有的數字0
"" 空字符串
() 空元組
[] 空列表
{} 空字典
set() 空集合
complex(r=0.0,i=0.0):用數字生成一個複數(實部爲r,虛部爲i)
str(obj='')| 用對象轉換爲字符串
實例:
>>>x=int() >>>x >>>x=0
>>>x=float() >>>x >>>x=0.0
>>>x=("1101",2) >>>x >>>x=13
>>>bool(0) >>>False
>>>str(0) >>>'0'
預置的數據型函數:
abs(x) 取x絕對值
round(number[,ndigits]) 對數值進行四捨五入,ndigits是小數向右取整的位數,負數表示向左取整
pow(x,y,z=None) 相當於x**y 或 x**y&z,其中z=None是默認填充
實例:>>>x = 13.456 >>>round(x) >>>13
>>>x = 13.456 >>>ruonnd(x,2) >>>13.46
>>>x = 13.456 >>>ruonnd(x,-1) >>>10.0 #保存十位,幹掉個位,對十位數進行四捨五入
>>>pow(3,2,4) >>>1
幫助函數:
help(x):查看文檔幫助實例:help(abs)
語句:語句由一些表達式組成,同城一條語句可以獨立執行來完成一部分事情並形成結果
實例:print("hello")
x = 1+2
注意:多條語句寫在一行需要用分號;分隔開
實例:print("hello");x = 1+2
顯示換行:
折行符:\
說明:折行符必須放在一行的末尾,示意解釋執行器,下一行也是本行的語句(\後不可以加任何的字符,包括空格) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
實例:x=11111111111111+11111111111111111+\
+3333333+222
print(x)
隱示換行:
所有的括號的內容換行
實例:1+(2+
3+4+5+5
+6
+7+7)
基本輸入輸出函數:
基本輸入函數:input(其返回的一定是字符串)作用:從標準輸入設備上讀取一個字符串,末尾的換行字符會被刪除
格式:input('提示字符串')
說明:返回輸入的字符串(僅python3)
實例:
text=input("請輸入圓的半徑:")
r=int(text)
pi=3.14
pritn("周長:",pi*2*r)
print("面積:",pi*r**2)
基本輸出函數print:
作用:將一系列的值以字符串的形式輸出到標準輸出設備上,輸出設備默認爲終端
格式:
print(value, ...,sep=' ',end='\n',file=sys.stdout,flush=False)
關鍵字參數的含義:
sep:兩個值之間的分隔符,默認爲一個空格(輸出字符串間隔符號由空格變成了自定義的符號)
end:輸出完畢後在流末尾自動追加一個字符串,默認爲換行符('\n表示換行')!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
flush:是否立即將流進行輸出(True指立刻輸出,False不是立刻輸出)
file:流對象,默認爲sys.stdout
實例1:
print(1,2,3,4)
print(1,2,3,4,sep=' ')
print(1,2,3,4,sep='!') #間隔符變成!(如果輸出內容中含有字符串,則將字符串當做一個整體,其整體後面的分隔符變成!)
實例2:
print("第一行文字",end='') #不換行,在一行顯示
print("第一行文字")
實例3:
print("第一行文字",end='\n\n\n') #中間空了3行
print("第一行文字")
實例4:
print("我可能在緩衝區") #系統檢測換行符(print語句結尾默認有),這裏有換行符,所以立即進行打印
import time
time.sleep(10)
print("我睡醒了")
實例5:
print("我可能在緩衝區",end='') #系統檢測換行符(print語句結尾默認有),這裏沒有換行符,暫時不打印
import time
time.sleep(10) #睡10秒
print("我睡醒了") #系統檢測換行符,發現換行符,將之前的放入緩衝區的“我可能在緩衝區”拉出來,將緩衝區清空,一起打印輸出
實例6:
print("我可能在緩衝區",end='',flush=True) #將緩衝區清空,刷新打印到屏幕上
import time
time.sleep(10)
print("我睡醒了")
實例7:
print("我可能在緩衝區",end='')
print("\nhello") #系統將檢測到hello末尾默認添加的“\n”,會將前面沒有打印的,放入緩衝區的信息一併抽出來進行打印操作
import time
time.sleep(3)
print("我睡醒了")
總結:
(1)系統檢測換行符(換行符是個控制字符,print語句的末尾會默認添加換行符‘\n’,),輸出時系統偵測換行符,只有見到換行符纔會進行打印工作(打印是個極耗時間的操作,經常將多個語句關聯到一起,放入緩存區,發現換行符一起輸出);如果程序執行結束,也會將緩衝區清空,執行該有的操作
(2)如果放入在緩衝區,程序執行完畢後會將緩衝區清空,拉出打印到屏幕
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.python語句
條件語句if 語句:讓程序根據條件選擇性的執行某條語句或某些語句
語法:
if 真值表達式1:
語句1
elif 真值表達式2:
語句2
elif 真值表達式3:
語句3
...
else:
語句4
說明:
elif子句可以有0個,1個或多個!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
else子句最多隻能有一個,也可以沒有;else後面不能再跟條件!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
總結:elif和else都可以沒有!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
實例:
text = input("請輸入一個數:")
n = int(text)
if n > 0:
print("這是一個正數")
elif n < 0: #我們認爲elif是if的一部分,所以if和elif是一條語句
print("這是一個負數")
else:
print("這是0")
print("程序結束")
if語句嵌套:
if語句本身是由多條語句組成的一條語句
if語句可以作爲語句嵌套到另一個語句的內部
實例:
score = input("請輸入學生成績")
score = int(score)
if 0 <= score <= 100:
if 0<=score<=60
print("不及格")
else:
print(""成績不合法)
print("程序結束")
條件表達式:
語法:
表達式1 if 真值表達式 else 表達式2
作用:
如果真值表達式的布爾環境值爲True,表達式1執行並返回對象,否則表達式2執行並返回對象
記憶:正確的時候返回左邊的,錯誤的時候返回右邊的
實例:a b
a if a > b else b (條件表達式真返回左值a,假時返回右值b)
實例1:
score = input("請輸入學生成績")
score = int(score)
if score >= 60
s="及格"
else:
s="不及格"
print("結果:",s)
實例2(與實例1作用相同):
score = input("請輸入學生成績")
score = int(score)
s = "及格" if score > 60 else "不及格" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
print("結果:",s)
實例3(去絕對值):
x = input("請輸入 一個數:")
x = int(x)
x = x if x >0 else -x #等同於x=abs(x)
實例4(用於記憶):!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
A if a > b else B 正確的返回左邊,錯誤的返回右邊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
pass:又名空語句,通常用於填充語法空白
語法:
實例1:
score = int(input("請輸入學生的成績:"))
if 0 <= score <= 100: #下面少一個操作語句,雖然人爲感到沒問題,但是不符合if語句的語法規則
else:
print("成績不合法")
print(score)
實例2(修改實例1):
score = int(input("請輸入學生的成績:"))
if 0 <= score <= 100:
pass
else:
print("成績不合法")
print(score)
2017/10/12