歡迎大家來到“Python從零到壹”,在這里我將分享約200篇Python系列文章,帶大家一起去學習和玩耍,看看Python這個有趣的世界,所有文章都將結合案例、代碼和作者的經驗講解,真心想把自己近十年的編程經驗分享給大家,希望對您有所幫助,文章中不足之處也請海涵,
Python系列整體框架包括基礎語法10篇、網路爬蟲30篇、可視化分析10篇、機器學習20篇、大資料分析20篇、影像識別30篇、人工智能40篇、Python安全20篇、其他技巧10篇,您的關注、點贊和轉發就是對秀璋最大的支持,知識無價人有情,希望我們都能在人生路上開心快樂、共同成長,
本文參考了作者CSDN的文章,鏈接如下:
- https://blog.csdn.net/Eastmount
- https://github.com/eastmountyxz/Python-zero2one
同時,作者新開的“娜璋AI安全之家”將專注于Python和安全技術,主要分享Web滲透、系統安全、人工智能、大資料分析、影像識別、惡意代碼檢測、CVE復現、威脅情報分析等文章,雖然作者是一名技術小白,但會保證每一篇文章都會很用心地撰寫,希望這些基礎性文章對你有所幫助,在Python和安全路上與大家一起進步,
文章目錄
- 一.條件陳述句
- 1.單分支
- 2.二分支
- 3.多分支
- 二.回圈陳述句
- 1.while回圈
- 2.for回圈
- 3.Break、Continue和Pass陳述句
- 4.嵌套回圈
- 三.函式
- 1.自定義函式
- 2.常見內部庫函式
- 3.第三方庫函式
- 四.總結
一.條件陳述句
在講訴條件陳述句之前,需要先補充陳述句塊的知識,陳述句塊并非一種陳述句,它是在條件為真時執行一次或執行多次的一組陳述句,在代碼前放置空格縮進即可創建陳述句塊,它類似于C、C++、Java等語言的大括號({ })來表示一個陳述句塊的開始和結束,
在Python中使用冒號(:)來標識陳述句塊的開始,塊中每一條陳述句都有縮進并且縮進量相同,當回退到上一層縮進量時,就表示當前陳述句塊已經結束, 下面開始詳細講解條件陳述句,
1.單分支
單分支語法如下:
if <condition>:
<statement>
<statement>
< condition > 是條件運算式,基本格式為< expr >< relop >< expr >;< statement >是陳述句主體,判斷條件如果為真(True)就執行陳述句,如果為假(False)就跳過陳述句,執行下一條陳述句,條件判斷通常有布爾運算式(True、False)、關系運算式(>、<、>=、<=、= =、!=)和邏輯運算運算式(and、or、not,其優先級從高到低是not、and、or)等,
注意:在Python2.x版本中,條件運算式是不強制要求用括號括起來的,但條件運算式后面一定要添加英文冒號字符,
a = 10
if a==10:
print('變數a等于10')
print(a)
輸出結果如下:

2.二分支
二分支語法如下:
if <condition>:
<statement>
<statement>
else:
<statement>
<statement>
執行程序如下圖所示:

如果條件陳述句< condition >為真,if后面的陳述句就被執行,如果為假,則執行else下面的陳述句塊,條件陳述句的格式為:< expr >< relop >< expr >,其中< expr >為運算式、為關系運算子,例如:a >= 10、b != 5等,
a = 10
if a >= 5:
print('變數a大于等于5')
print(a)
else:
print('變數a小于5')
print(a)
輸出結果如下,由于變數a為10,大于5執行if中的陳述句,

3.多分支
if多分支由if-elif-else組成,其中elif相當于else if,同時它可以使用多個if的嵌套,具體語法如下所示:
if <condition1>:
<case1 statements>
elif<condition2>:
<case2 statements>
elif<condition3>:
<case3 statements>
...
else:
<default statements>
該陳述句是順序評估每個條件,如果當前條件分支為True,則執行對應分支下的陳述句塊,如果沒有任何條件成立,則執行else中的陳述句塊,其中else是可以省略的,代碼如下:
num = input("please input:")
num = int(num)
print(num)
if num >= 90:
print('A Class')
elif num >= 80:
print('B Class')
elif num >= 70:
print('C Class')
elif num >=60:
print('D Class')
else:
print('No Pass')
輸出值為76,則在80到70之間,成績為C等級,輸出結果如下圖所示,

注意:由于Python不支持switch陳述句,所以多個條件判斷,只能用elif來實作,如果判斷需要多個條件需同時判斷時,可以:
- 使用or (或),表示兩個條件有一個成立時判斷條件成功
- 使用and (與),表示只有兩個條件同時成立的情況下,判斷條件才成功
# 判斷值是否在小于0或大于10
num = 10
if num < 0 or num > 10:
print('hello')
else:
print('undefine')
# 輸出結果: undefine
# 判斷值是否在0~5或者10~15之間
num = 8
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print('hello')
else:
print('undefine')
輸出結果如下圖所示:

當if有多個條件時可使用括號來區分判斷的先后順序,括號中的判斷優先執行,此外and和or的優先級低于>(大于)、<(小于)等判斷符號,即大于和小于在沒有括號的情況下會比與或要優先判斷,
同時,你也可以在同一行的位置上使用if條件判斷陳述句,如下實體,但不見大家使用類似的語法,在我們撰寫專案或實戰中,很可能你的代碼會供別人學習,有時你只負責其中一部分,良好的代碼格式及注釋是非常必要的,
var = 520
if (var ==520): print("感謝您關注娜璋AI安全之家")
二.回圈陳述句
Python回圈陳述句主要分為while回圈和for回圈,它允許我們執行一個陳述句或陳述句組多次,
1.while回圈
while回圈陳述句的基本格式如下:
while <condition>:
<statement>
else:
<statement>
執行流程如下圖所示:

條件運算式< condition >如果為真時,則回圈體重復執行,直到條件判斷為假,回圈體終止,如果第一次判斷條件就為假,則直接跳出回圈執行else陳述句,注意else陳述句可以省略,同時冒號(:)開始進入回圈體,縮進區分陳述句塊,條件陳述句condition包括布爾運算式(True、False)、關系運算式(>、<、>=、<=、= =、!=)和邏輯運算運算式(and、or、not)等,
案例1:1+2+…+100
i = 1
s = 0
while i <= 100:
s = s+i
i = i+1
else:
print('over')
print('sum = ', s)
這段代碼是作者寫博客或授課時,講述回圈陳述句最常用的例子,求1+2+3+…+100的結果,答案是5050,該段代碼反復執行“i<=100”判斷,當i加到101時,判斷i>100為假則結束回圈執行else陳述句,

案例2:回圈打開網站
再舉一個實體,通過定義一個while回圈,呼叫webbrowser庫的open_new_tab()函式回圈打開百度首頁網址,下面代碼反復打開了百度首頁5次,完整代碼如下:
import webbrowser as web
import time
import os
i=0
while i<5:
web.open_new_tab('http://www.baidu.com')
i=i+1
time.sleep(0.8)
else:
os.system('taskkill /F /IM iexplore.exe')
print('close IE')
代碼是呼叫webbrowser庫中open_new_tab()函式打開視窗(百度鏈接)5次,

最后回圈結束執行os.system()作業系統函式,呼叫taskkill命令結束IE瀏覽器行程(Iexplore.exe),其他瀏覽器程式修改為chrome.exe、qq.exe或firefox.exe即可,其中引數“/F”表示強行終止程式,“/IM”表示影像,如下圖所示,

注意:上述代碼實作了回圈打開某個網站,可以應用于刷取網頁瀏覽量或Web開發測驗等功能,比如新浪博客等部分網頁打開一次瀏覽器會計算一次瀏覽次數,通過上面這段代碼可以回圈增加閱讀量,部分網站又是通過瀏覽量進行排序的,不妨試試看,作者引入該代碼僅為讀者了解回圈,也為后面的爬蟲知識埋下伏筆,
案例3:奇數和偶數計算
最后補充一個奇數和偶數計算的案例,其基本流程如下圖所示:

代碼如下:
numbers = [12, 37, 5, 42, 8, 3]
even = []
odd = []
while len(numbers) > 0:
number = numbers.pop()
if(number % 2 == 0): #偶數判斷
even.append(number)
else:
odd.append(number)
#輸出結果
print(even)
print(odd)
輸出結果如下:
[8, 42, 12]
[3, 5, 37]
2.for回圈
for回圈陳述句的基本格式如下:
for <var> in <sequence>:
<statement>
<statement>
流程圖如下:

自定義回圈變數var遍歷sequence序列中的每一個值,每個值執行一次回圈的陳述句塊,sequences表示序列,常見型別有list(串列)、tuple(元組)、strings(字串)和files(檔案),下面的代碼是計算1到100的求和,輸出三角形星號的示例,
#元組回圈
tup = (1,2,3,4,5)
for n in tup:
print(n)
else:
print('End for\n')
#計算1+2+...+100
s = 0
for i in range(101):
s = s + i
print('sum =', s)
#輸出三角形星號
for i in range(10):
print("*"*i)
輸出結果如下圖所示,回圈遍歷元組tup變數中的值,依次獲取并輸出;然后計算1累加到100,range(101)表示依次獲取101范圍內的100個數字,其累加結果為5050;最后輸出星號三角形,print “ * ” * i 代碼中,第一個星號表示輸出星號字串,第二個星號是乘法,表示輸出5個星號,終輸出三角形,列印圖形是編程基礎,使用Python實作要比C語言容易很多,但原理邏輯是一樣的,

3.Break、Continue和Pass陳述句
Break和Continue是兩個常用的跳出回圈陳述句,
- Break陳述句
跳出最內層while、for回圈,在陳述句塊執行程序中終止回圈,并且跳出整個回圈,
s = 0
num = 0
while num<20:
num += 1
s += num
if s > 100:
break
print("The sum is", s)
# The sum is 105
當求和變數s大于100的時候,進入if判斷,執行break跳出回圈,最后輸出105,
- Continue陳述句
在陳述句塊執行程序中終止當前回圈,跳出該次回圈,執行下一次回圈,
for num in range(10):
if num % 2 == 0:
print("even number:", num)
continue
print("number:",num)
輸出結果如下,當為偶數的時候continue跳出當前回圈,for回圈中只輸出偶數,
>>>
even number: 0
number: 1
even number: 2
number: 3
even number: 4
number: 5
even number: 6
number: 7
even number: 8
number: 9
>>>
- pass陳述句
pass陳述句是空陳述句,為了保持程式結構的完整性所使用的,
# 輸出 Python 的每個字母
for letter in 'Python':
if letter == 'h':
pass
print('這是 pass 塊')
print('當前字母 :', letter)
print("Good bye!")
輸出結果如下圖所示:

4.嵌套回圈
while基本語法如下:
while expression:
while expression:
statement(s)
statement(s)
for基本語法如下:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
下面以最簡單的冒泡排序演算法來補充回圈嵌套知識,冒泡排序是最常見到的排序演算法,也是很基礎的一種排序演算法,它的實作思想是:
- 相鄰的兩個元素進行比較,然后把較大的元素放到后面(正向排序),在一輪比較完后最大的元素就放在了最后一個位置,像魚兒在水中吐的氣泡在上升的程序中不斷變大,
def bubble_sort(list):
count = len(list)
for i in range(count):
for j in range(i + 1, count):
if list[i] > list[j]:
list[i], list[j] = list[j], list[i]
return list
#排序演算法
list = [3, 91, 23, 14, 56, 9]
print("排序前:", list)
res = bubble_sort(list)
print("排序后:", res)
輸出結果如下:

你可能會疑惑bubble_sort()是什么?其實它是一個自定義函式,下面我們馬上講解,
三.函式
當讀者需要完成特定功能的陳述句塊時,需要通過呼叫函式來完成對應的功能,函式分為無引數函式和有引數函式,當函式提供不同的引數時,可以實作對不同資料的處理,下面從自定義函式、系統自帶函式、第三方庫函式三個方面進行講解,
1.自定義函式
(1) 定義方法
為了簡化編程,提高代碼的復用性,可以自定義函式,函式定義如下:
def funtion_name([para1,para2...paraN]):
statement1
statement2
....
[return value1,value2...valueN]
其中:
- 定義函式需要使用def關鍵詞
- function_name表示函式名,后面的冒號(:)不要忘記,并且縮進
- [para1,para2…paraN]表示引數,可以省略,也可以多個引數
- [return value1,value2…valueN]表示回傳值,可以無回傳值,也可以多個回傳值
- 需要注意的是自定義函式有回傳值,主調函式就需要接受回傳的結果
函式呼叫時,形參被賦予真實的引數,然后執行函式體,并在函式結束呼叫時回傳結果,Return陳述句表示退出函式并回傳到函式被呼叫的地方,回傳值傳遞給呼叫程式,
首先來看一個無回傳值的求和函式fun1(),代碼如下:
#函式定義
def fun1(a,b):
print(a,b)
c = a + b
print('sum =',c)
#函式呼叫
fun1(3,4)
# 3 4
# sum = 7
再來看一個包含多個引數回傳的計算器函式fun2(),代碼如下,return回傳五個結果,
#函式定義
def fun2(a,b):
print(a,b)
X = a + b
Y = a - b
Z = a * b
M = a / b
N = a ** b
return X,Y,Z,M,N
#函式呼叫
a,b,c,d,e = fun2(4,3)
print('the result are ',a,b,c,d,e)
re = fun2(2,10)
print(re)
輸出結果如下,依次回傳加法、減法、乘法、除法、冪運算結果,
>>>
4 3
the result are 7 1 12 1.3333333333333333 64
2 10
(12, -8, 20, 0.2, 1024)
>>>
(2) 自定義函式引數含預定義
預設值是在自定義函式基礎上,對某些引數賦予預定義值,例如:
def fun3(a,b,c=10):
print(a,b,c)
n = a + b + c
return n
print('result1 =',fun3(2,3))
print('result2 =',fun3(2,3,5))
第一次呼叫a為2,b為3,c為預定義值10,求和輸出15;第二次呼叫修改了預定義值c,賦值為5,求和即為2+3+5=10,

注意:預定義值得引數不能先于無預定義值引數;同時,函式呼叫時,建議采用一對一賦值,也可以在函式呼叫中給出具體形參進行賦值,但需要注意的是在函式呼叫程序中(使用函式時),有預定義值的引數不能先于無預定義值引數被賦值,
2.常見內部庫函式
Python系統內部提供了一些庫函式供大家使用,這里主要介紹最常見的四個庫函式,即str字串庫函式、math資料庫函式、os作業系統庫函式、socket網路套接字庫函式,Python常見內部庫函式如下:

下面代碼是這四個常見內部庫函式的具體用法,代碼如下:
# -*- coding:utf-8 -*-
#字串庫函式
str1 = "hello world"
print('計算字串長度:', len(str1))
str2 = str1.title()
print('首字母大寫標題轉換:', str2)
str3 = '12ab34ab56ab78ab'
print('字串替換:', str3.replace('ab',' '))
#數學庫函式
import math
print(math.pi)
num1 = math.cos(math.pi/3)
print('余弦定律:', num1)
num2 = pow(2,10)
print('冪次運算:', num2)
num3 = math.log10(1000)
print('求以10為底的對數:', num3)
#作業系統庫函式
import os
print('輸出當前使用平臺:', os.name)
path = os.getcwd()
print('獲取當前作業目錄', path)
os.system('taskkill /F /IM iexplore.exe') #關閉瀏覽器行程
#網路套接字庫函式
import socket
ip = socket.gethostbyname('www.baidu.com')
print('獲取百度ip地址', ip)
輸出結果如下圖所示,

3.第三方庫函式
Python作為一門開源語言,它支持各種第三方提供的開源庫供我們使用,其使用第三方函式庫時的具體格式為:
- module_name.method(parametes)
表示“第三方函式名.方法(引數)”,例如httplib\httplib2庫是針對HTTP和HTTPS的客戶端協議,使用httplib2庫函式之前,如果沒有安裝httplib2庫會報錯“ImportError: No module named httplib2”,如圖2.18所示,

在Linux環境中,輸入命令“easy_install httplib2”可以實作自動安裝擴展包,Windows環境下需要安裝pip或easy_install工具,再呼叫命令執行安裝,在后續文章會講解pip安裝工具及用法,后面章節也會介紹各種第三方庫函式實作資料爬取和分析操作,
四.總結
無論如何,作者都希望這篇文章能給您普及一些Python知識,更希望您能跟著我一起寫代碼,一起進步,如果文章能給您的研究或專案提供一些微不足道的思路和幫助,就更欣慰了,作者最大的期望就是文章中的一些故事、話語、代碼或案例對您有所幫助,致那些努力奮斗的人,
最后,真誠地感謝您關注“娜璋之家”公眾號,感謝CSDN這么多年的陪伴,會一直堅持分享,希望我的文章能陪伴你成長,也希望在技術路上不斷前行,文章如果對你有幫助、有感悟,就是對我最好的回報,且看且珍惜!2020年8月18日建立的公眾號,再次感謝您的關注,也請幫忙宣傳下“娜璋之家”,哈哈~初來乍到,還請多多指教,

遺憾,讓我們懂得完美,
逝去,讓我們不斷前行,
她夜色中的身姿是那么的美,
(By:娜璋之家 Eastmount 2020-09-09 夜于武漢 https://blog.csdn.net/Eastmount )
參考文獻如下:
[1] 作者書籍《Python網路資料爬取及分析從入門到精通》
[2] 作者博客:https://blog.csdn.net/Eastmount
[3] https://www.runoob.com/python/python-if-statement.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/11653.html
標籤:其他
