人工智能入門與實(shí)戰(zhàn)第一季:python基礎(chǔ)語法

安裝PyCharm
為了更加方便我們編程,從本章開始我們將使用PyCharm開發(fā)環(huán)境,上面我們也提到了IDLE開發(fā)環(huán)境,借此機(jī)會你也可以對比一下PyCharm與IDLE誰更好用?
以下安裝以mac為例:(windows類似)
下載地址:https://www.jetbrains.com/pycharm/download/#section=mac

左側(cè)專業(yè)版收費(fèi),右側(cè)是社區(qū)開源版本,可以滿足基本開發(fā),當(dāng)然你也可以從網(wǎng)上找專業(yè)免費(fèi)版,沒錯,就是通常說的破解版。
安裝很簡單,下載之后直接安裝,無需多余配置。
PyCharm初體驗(yàn)
使用PyCharm寫你的第一個程序,你可以創(chuàng)建新項(xiàng)目,當(dāng)然也可以直接使用PyCharm打開并運(yùn)行我們前面寫的代碼,比如love_china.py,首先打開PyCharm:

我們看到PyCharm這個面板左側(cè)是歷史打開的項(xiàng)目或文件,右側(cè)是操作區(qū),我們點(diǎn)擊Open,找到你之前存放的love_china.py文件,雙擊打開。
這時會出現(xiàn)如下提示“找不到Python解釋器”,所以此時還無法運(yùn)行程序:

我們點(diǎn)擊(上圖)提示內(nèi)容后面的“Configure Python interpreter”即配置Python解釋器(也可以從工具欄PyCharm-Preferences打開),會打開參數(shù)設(shè)置界面(下圖),選擇我們已經(jīng)安裝的Python解釋器,點(diǎn)擊ok即可。

好了,現(xiàn)在可以運(yùn)行l(wèi)ove_china.py這個程序了,工具欄選擇“Run-Run”即可運(yùn)行,也可以在當(dāng)前文件編輯界面“右鍵-Run”也可以運(yùn)行。

如果要自己創(chuàng)建python文件,可以工具欄選擇File-New-Python File


好了,PyCharm的安裝和基本使用先寫到這里,后續(xù)在學(xué)習(xí)的過程中會和你一起慢慢熟悉更多的功能。
注釋
什么是注釋?
注釋是指在程序中添加的備注或者說明,解釋器不會把它當(dāng)做代碼來運(yùn)行,只是起到說明的作用,我們以后使用別人提供的代碼時都會看到大量的注釋,以便你能更好的理解他們的代碼邏輯。代碼中適當(dāng)?shù)奶砑幼⑨屖莻€好習(xí)慣。
1.單行注釋:#
單行注釋快捷鍵:mac系統(tǒng)使用command+/、windows系統(tǒng)使用Ctrl+/
單行注釋實(shí)現(xiàn)批量注釋:批量選中要注釋的代碼,mac系統(tǒng)使用使用command+/、windows系統(tǒng)使用Ctrl+/
2.多行注釋:'''或"""
代碼示例:
#這里是單行注釋
#再來一個單行注釋
#print("我已經(jīng)被注釋掉了,不會執(zhí)行了")
'''
我是多行注釋
我是多行注釋
'''
"""
我也是多行注釋
print("我已經(jīng)被注釋掉了,不會執(zhí)行了")
"""
#以下將執(zhí)行一個輸入操作
name = input("請輸入你的名字:")
print(name) #打印輸入的名字
行與縮進(jìn)
不少編程語言都是使用大括號 {}來表示代碼塊的,而python則是使用縮進(jìn),一般采用4個空格,可以使用tab制表符,同一個代碼塊的語句必須包含相同的縮進(jìn)空格數(shù)。
代碼示例:
x = 5
y = 6
if x == y:
print('x和y相等')
else:
print("x和y不相等")
更多的代碼書寫風(fēng)格官方文檔里有詳細(xì)說明:
https://www.python.org/dev/peps/pep-0008/
注釋與縮進(jìn)對應(yīng)的源碼:se1_ch2_note.py
變量
在計算機(jī)的世界里,一切皆數(shù)據(jù),那么在計算機(jī)的內(nèi)存中如何存取數(shù)據(jù)呢,答案是變量,變量就如同你家的門牌號,通過門牌號可以找到你的家,同樣通過變量可以找到內(nèi)存中的某個數(shù)據(jù),當(dāng)然前提是這個變量存儲了該數(shù)據(jù)的內(nèi)存地址。
變量賦值
python中變量無需聲明類型,每個變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。
賦值表達(dá)式:變量名 = 表達(dá)式
表示把右邊表達(dá)式的值賦值給左邊的變量,準(zhǔn)確的說是左邊的變量存儲了右邊數(shù)據(jù)的內(nèi)存地址,表達(dá)式可以是簡單的數(shù)值、字符串,也可以是復(fù)雜的運(yùn)算表達(dá)式。
代碼示例:
a = 1
b = c = 2 #等同于b=2; c=2
d,e = 3,4 #等同于d=3; e=4
print(a,b,c,d,e)
name = 'judy'
print(name)
#使用type()函數(shù),查看變量的類型
print(type(a))
print(type(name))
輸出結(jié)果:
1 2 2 3 4
judy
<class 'int'>
<class 'str'>
標(biāo)識符
什么是標(biāo)識符:python中標(biāo)識符包括變量名、函數(shù)名、類名、模塊名、包名
標(biāo)識符命名規(guī)則:
1、第一個字符必須是字母或下劃線"_"
2、其他字符由字母、數(shù)字、下劃線組成
3、標(biāo)識符區(qū)分大小寫
4、不可以使用保留字符,例如if、while、False、and、not、return、...
查看更多保留字:
import keyword
print(keyword.kwlist)
在python中,在遵守標(biāo)識符命名規(guī)則前提下,開發(fā)人員通常這樣來命名:
1.模塊名、包名:字母一般小寫,多個單詞之間使用下劃線連接,例如前面的例子:hello_world.py,比如python的數(shù)學(xué)庫:math.py
2.函數(shù)名:字母一般小寫,多個單詞之間使用下劃線連接,例如系統(tǒng)輸入輸出函數(shù):print()、input()
3.變量名:字母一般小寫,多個單詞之間使用下劃線連接,例如:name、str_length
當(dāng)然除了以上的命名規(guī)則之外,以上命名我們需要盡量做到見名知意,好的命名和好的代碼結(jié)構(gòu)是作為一名開發(fā)人員的基礎(chǔ)素養(yǎng),會給閱讀你的代碼人留下非常好的印象。
變量和標(biāo)識符對應(yīng)的源碼:se1_ch2_variables.py
數(shù)字類型
python中有三種數(shù)字類型:整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)。
1、整型(int): 整數(shù),不帶小數(shù)點(diǎn),例如1,100,Python3 整型沒有限制大小,也可以當(dāng)做長整型使用,所以Python3中沒有l(wèi)ong類型
2、浮點(diǎn)型(float):小數(shù),例如9.99,浮點(diǎn)型也可以使用科學(xué)計數(shù)法表示,例如999e-2
3、復(fù)數(shù)(complex):復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a + bj,或者complex(a,b)表示, 復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。(了解)
算術(shù)運(yùn)算符
| 運(yùn)算符 | 描述 | 舉例 | 結(jié)果 |
|---|---|---|---|
| + | 加 | 5+6 | 11 |
| - | 減 | 2-1 | 1 |
| * | 乘 | 3*6 | 18 |
| / | 浮點(diǎn)除法 | 5/2 | 2.5 |
| // | 整數(shù)除法 | 5//2 | 2 |
| % | 取余/模 | 5%2 | 1 |
| ** | 冪 | 2**3 | 8 |
注意一下正、負(fù)數(shù)的取整的區(qū)別,代碼示例:
print(-9 // 2)
print(9 // 2)
輸入結(jié)果:
-5
4
數(shù)學(xué)函數(shù)
| 函數(shù) | 描述 | 舉例 | 結(jié)果 |
|---|---|---|---|
| abs(x) | x 的絕對值 | abs(-4) | 4 |
| int(x) | 將 x 轉(zhuǎn)換為整數(shù) | int(3.6) | 3 |
| float(x) | 將 x 轉(zhuǎn)換為浮點(diǎn)數(shù) | float("123") | 123.0 |
| divmod(x,y) | 返回一對商和余數(shù) | divmod(5,3) | (1, 2) |
| pow(x, y) | x 的 y 次冪 | pow(2,3) | 8 |
| round(x[, n]) | 四舍五入,n表示保留小數(shù)位數(shù) | round(5.9) | 6 |
| math.floor(x) | 返回數(shù)字的下舍整數(shù) | math.floor(5.9) | 5 |
| math.ceil(x) | 返回數(shù)字的上入整數(shù) | math.ceil(5.1) | 6 |
以上是一些常用的數(shù)學(xué)函數(shù),列出來為了讓你可以有個直觀的感受和了解,我們使用時到官網(wǎng)查找即可,官網(wǎng)標(biāo)準(zhǔn)庫地址如下:
https://docs.python.org/zh-cn/3/library/index.html#library-index


文檔中包含了數(shù)學(xué)函數(shù)、隨機(jī)函數(shù)、冪函數(shù)、對數(shù)函數(shù)、三角函數(shù)等各種函數(shù)的說明。
代碼示例:
print(abs(-4))
print(int(3.6))
print(float("123"))
print(divmod(5,3))
print(pow(2,3))
print(round(5.9))
#記得先導(dǎo)入math模塊:import math,上面的方法為啥不用導(dǎo)入對應(yīng)的模塊?原因很簡單:以上方法屬于python解釋器的內(nèi)置函數(shù)(Built-in Functions)
print(math.floor(5.9))
print(math.ceil(5.1))
輸出結(jié)果:
4
3
123.0
(1, 2)
8
6
5
6
復(fù)合賦值運(yùn)算符
復(fù)合賦值運(yùn)算符是對正常運(yùn)算符賦值的一種簡化,下面以加、減、乘、除舉例,其他類似:
| 運(yùn)算符 | 舉例 | 等價于 |
|---|---|---|
| += | s += 3 | s = s + 3 |
| -= | s -= 3 | s = s - 3 |
| *= | s *= 3 | s = s * 3 |
| /= | s /= 3 | s = s / 3 |
代碼示例:
#例如s=1,s加1之后的值再存儲到s中
s = 1
s += 1 #等價于 s = s + 1
print(s)
輸出結(jié)果:
2
布爾值
布爾類型只有兩個值: True 和 False,多用在條件語句中,表示條件的真與假
比較運(yùn)算符
所有比較運(yùn)算符返回非0表示真,返回0表示假,這分別與布爾值True和False等價
以下假設(shè)a = 5, b = 8
| 運(yùn)算符 | 描述 | 舉例 | 結(jié)果 |
|---|---|---|---|
| == | 等于 - 比較對象是否相等 | a == b | False |
| != | 不等于 - 比較兩個對象是否不相等 | a != b | True |
| > | 大于 - 返回x是否大于y | a > b | False |
| < | 小于 - 返回x是否小于y | a < b | True |
| >= | 大于等于 - 返回x是否大于等于y | a >= b | False |
| <= | 小于等于 - 返回x是否小于等于y | a <= b | True |
代碼示例1:
#你中500w了嗎?
is_500w = True
print(type(is_500w), is_500w)
if is_500w :
print("好開心")
else:
print("再接再厲")
輸出結(jié)果:
<class 'bool'> True
好開心
代碼示例2:
x = 5
y = 6
print(x==y)
if x == y:
print('x和y相等')
else:
print("x和y不相等")
if x < y:
print("x小于y")
else:
print("x大于等于y")
輸出結(jié)果:
False
x和y不相等
x小于y
所有比較運(yùn)算符返回非0表示真,返回0表示假,這分別與布爾值True和False等價,怎么理解?舉例如下,觀察打印結(jié)果:
代碼示例:
if 5:
print('5非0,表示True')
if True:
print('True')
if 0:
pass #反正這個分支也不會執(zhí)行,就用pass略過
else:
print("0為假,表示False")
if False:
pass
else:
print("False")
輸出結(jié)果:
5非0,表示True
True
0為假,表示False
False
邏輯運(yùn)算符
以下假設(shè)變量 a 為 5, b為 6:
| 運(yùn)算符 | 邏輯表達(dá)式 | 描述 | 舉例 |
|---|---|---|---|
| and | x and y | 布爾"與" : 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 | (a and b) 返回 6 |
| or | x or y | 布爾"或" : 如果 x 是 True,它返回 x 的值,否則它返回 y 的計算值。 | (a or b) 返回 5 |
| not | not x | 布爾"非" : 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not 5 返回False |
以下示例描述了邏輯運(yùn)算的基本邏輯,試著修改case1和case2的值,看一下輸出結(jié)果有什么不一樣吧?
示例代碼:
case1 = 0 #把我改成非0的值試試
case2 = 3 #把我改成0試試
if (case1 and case2):
print('case1 和 case2 都為True')
else:
print('case1 和 case2 至少有一個不為True')
if (case1 or case2):
print('case1 和 case2 至少有一個為True')
else:
print('case1 和 case2 都不為True')
if (not case1):
print('case1為False')
else:
print('case1為True')
邏輯運(yùn)算符有啥用?用處太大了,現(xiàn)實(shí)世界使用邏輯運(yùn)算符的場景太多了,比如要想進(jìn)入BAT,條件必須是211或985,且研究生學(xué)歷,那么這個條件語句可以這樣寫:
(case1 == "211" or case1 == "985") and case2 == "研究生"
數(shù)字類型、各種運(yùn)算符對應(yīng)的源碼:se1_ch2_numeric.py
本章作業(yè)
1、解一道數(shù)學(xué)題,給定半徑r=5,計算圓的周長
2、某小學(xué)考試評優(yōu)三個等級,80分(含)以上:優(yōu)秀、60-79分:一般、60以下:不及格,小明數(shù)學(xué)考試得了59分,通過比較運(yùn)算打印出小明的評優(yōu)結(jié)果
本章作業(yè)對應(yīng)的源碼:se1_ch2_home_work.py
本章總結(jié)
從本章開始已經(jīng)進(jìn)入python語言的正式學(xué)習(xí)中了,當(dāng)然還是最基礎(chǔ)的階段,本章主要講了變量、數(shù)字類型和布爾類型的幾種數(shù)據(jù)類型,還有各種常見的運(yùn)算符。
當(dāng)然python中的數(shù)據(jù)類型還遠(yuǎn)遠(yuǎn)不止數(shù)字類型和布爾類型,還有字符串、各種序列、字典,我們下一章再陸續(xù)推出。
“豬弟爸爸”碎碎念
今天說一個比較容易犯的錯誤,就連我自己在今天的代碼編寫中也出現(xiàn)過,就是中英文輸入法,是的,我在前面提到過,比如代碼中的括號、引號、分號,都必須是英文輸入法,否則會報錯。
但是對于初學(xué)者而言如果出現(xiàn)上述錯誤可能會浪費(fèi)掉你的很多時間去排查,所以,我們要避免這個問題。
還有需要提醒的是記得學(xué)會使用官方文檔,因?yàn)檫@才是一手資料,而且python官方文檔支持中文,這在其他編程語言中是很少見的,說明當(dāng)今中國開發(fā)者已經(jīng)成為一群不可忽視的力量了,當(dāng)然如果你的英文很好可以直接切到英文模式。
今天講的內(nèi)容在官方網(wǎng)站都可以找到對應(yīng)的文檔:
https://docs.python.org/zh-cn/3/reference/index.html(Python語言參考)
https://docs.python.org/zh-cn/3/library/index.html(Python 標(biāo)準(zhǔn)庫)
我是豬弟爸爸:zhudipapa,有問題給我留言,我們下節(jié)見!