筆者:風起怨江南 出處:https://blog.csdn.net/JackMengJin 筆者原創,文章歡迎轉載,如果喜歡請點贊+關注,感謝支持!
目錄
Python學習03:條件判斷從句
Python條件判斷語句通過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。
每條if語句的核心都是一個值爲True或False的表達式,這種表達式被稱爲條件測試。Python程序語言規定:
- 任何非0、非空(null)值爲true。
- 0 或者 null爲false。
一、if語句
1.1 if語句基本形式
編程中經常需要檢查一系列條件,並據此決定採用什麼措施。Python 編程中 if 語句用於控制程序的執行,基本形式爲:
if 判斷條件:
執行語句……
else:
執行語句……
"if判斷條件"成立時(值非零),則執行後面的語句,而執行內容可以多行,以縮進來區分表示同一範圍。
else 爲可選語句,在條件不成立時執行相關語句。
先看一個示例並試着理解:
#if語句
num0 = 1
num1 = 2
if num1 == num0:
print('Yes')
else:
print('No')
No
在Python中if語句能夠檢查程序的當前狀態,並據此採用相應的措施。
需要注意的是,if + 判斷條件後需要加‘:’冒號,else後也需要加‘:’冒號。
1.2 if語句判斷順序
- 如果判斷結果爲true,會依次執行接下來的語句,如果判斷結果爲false,則會不執行if中的語句。
- 如果判斷結果爲true,會執行if中的語句,如果判斷結果爲false,則會執行else中的語句。
這裏以詹姆斯場均得分舉例:
#if語句
score0 = 25 #詹姆斯這賽季場均得分
score1 = 27 #詹姆斯生涯場均得分
if score0 == score1:
print('詹姆斯這賽季場均得分等於生涯場均得分')
else:
print('詹姆斯這賽季場均得分不等於生涯場均得分')
詹姆斯這賽季場均得分不等於生涯場均得分
1.3 各種判斷條件關係
if 語句的判斷條件可以用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)、!=(不等於)來表示其關係。具體用法會在第二節舉例說明。
1.4 if...elif...else用法
當判斷條件爲多個值時,可以使用以下形式:
if 判斷條件1:
執行語句1
elif 判斷條件2:
執行語句2
else:
執行語句3
這裏還以詹姆斯場均得分舉例:
#if語句
score0 = 25 #詹姆斯這賽季場均得分
score1 = 27 #詹姆斯生涯場均得分
if score0 == score1:
print('詹姆斯這賽季場均得分等於生涯場均得分')
elif score0 > score1:
print('詹姆斯這賽季場均得分大於生涯場均得分')
else:
print('詹姆斯這賽季場均得分小於生涯場均得分')
詹姆斯這賽季場均得分小於生涯場均得分
在Python裏多個條件判斷用elif來實現。
在if...elif...else結構裏的判斷順序:
- 如果if條件判斷結果爲true,會執行if中的語句。
- 如果if條件判斷結果爲false,elif條件判斷結果爲true,則會執行elif中的語句。
- 如果if條件判斷結果爲false,elif條件判斷結果爲false,則會執行else中的語句。
1.5 多個條件同時判斷
- 如果判斷需要多個條件同時判斷時,可以使用 or (或),表示兩個條件有一個成立時判斷條件成功。
- 使用 and (與)表示只有兩個條件同時成立的情況下,判斷條件才成功。
多個條件同時判斷的具體用法會在第二節舉例說明。
二、內置函數input()用法
2.1 小插曲
本來打算將input()放在上面文章裏穿插着講下,但由於這個錯誤的使用,還是覺得單獨把input()拎出來講下效果更好:
#if語句
print('請猜下老詹這賽季場均多少分:')
score0 = 25 #詹姆斯這賽季場均得分
guess0 = input() #猜的分數
if guess0 == score0:
print('恭喜你猜對了,這賽季老詹場均25分!')
else:
print('很遺憾猜錯了,差一點哦')
請猜下老詹這賽季場均多少分:
25
本來以爲輸入25會得到正確的答案,結果啪啪打臉:
請猜下老詹這賽季場均多少分:
25
很遺憾猜錯了,差一點哦
然後我意識到可能輸出的類型不對,於是我加上打印再嘗試運行一下:
#if語句
print('請猜下老詹這賽季場均多少分:')
score0 = 25 #詹姆斯這賽季場均得分
guess0 = input() #猜的分數
print(type(score0))#查看score0類型
print(type(guess0))#查看guess0類型
if guess0 == score0:
print('恭喜你猜對了,這賽季老詹場均25分!')
else:
print('很遺憾猜錯了,差一點哦')
結果果然不出所料,數據類型不同導致的答案錯誤:
請猜下老詹這賽季場均多少分:
25
<class 'int'>
<class 'str'>
很遺憾猜錯了,差一點哦
可以通過打印看到input()輸入的值是字符串的數據類型(str),所以雖然都是25,但一個代表整數,一個代表字符串,所以得不到正確答案。
2.2 Python的內置函數
查看關於對Python內置函數的詳細資料,可以點擊Python官網-內置函數->傳送門。
而在Python手冊裏是怎麼定義input()的呢?
input
([prompt])如果存在 prompt 實參,則將其寫入標準輸出,末尾不帶換行符。接下來,該函數從輸入中讀取一行,將其轉換爲字符串(除了末尾的換行符)並返回。當讀取到 EOF 時,則觸發
EOFError
。例如:
>>> s = input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
由上可以看到input()返回的值是str字符,所以如果讓輸入的數字變爲整形,可以使用int()方法:
int(input())
#if語句
print('請猜下老詹這賽季場均多少分:')
score0 = 25 #詹姆斯這賽季場均得分
guess0 = int(input()) #猜的分數
print(type(score0))#查看score0類型
print(type(guess0))#查看score0類型
if guess0 == score0:
print('恭喜你猜對了,這賽季老詹場均25分!')
else:
print('很遺憾猜錯了,差一點哦')
請猜下老詹這賽季場均多少分:
25
<class 'int'>
<class 'int'>
恭喜你猜對了,這賽季老詹場均25分!
可以看到使用int()方法後,變量guess0的數據類型爲int類型,而不是2.1實例中的str數據類型,所以運行正確。
2.3 更多實例
還是以老詹得分爲例子,這裏增加了一個random隨機庫(random庫是使用隨機數的Python標準庫)。
從概率論角度來說,隨機數是隨機產生的數據(比如拋硬幣),但時計算機是不可能產生隨機值,真正的隨機數也是在特定條件下產生的確定值,只不過這些條件我們沒有理解,或者超出了我們的理解範圍。計算機不能產生真正的隨機數,那麼僞隨機數也就被稱爲隨機數
--僞隨機數:計算機中通過採用梅森旋轉算法生成的(僞)隨機序列元素
python中用於生成僞隨機數的函數庫是random
因爲是標準庫,使用時候只需要import random
random庫包含兩類函數,常用的共8個
--基本隨機函數: seed(), random()
--擴展隨機函數:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
已知老詹的得分是一個隨機數,範圍在20~30之間。用戶需要輸入數值猜測老詹的場均得分(變量score0),具體代碼如下:
import random
#if語句
print('請猜下老詹這賽季場均多少分:')
#詹姆斯這賽季場均得分爲一個隨機數,範圍在20~30之間
score0 = random.randint(20,30)
guess0 = int(input()) #猜的分數
print(type(score0))#查看score0類型
print(type(guess0))#查看score0類型
if guess0 == score0:
print('恭喜你猜對了,這賽季老詹場均:',score0,'分!')
elif guess0 < 20:
print('不要太小看老漢,他得分肯定大於20分的。告訴你正確答案吧:', score0, '分!')
elif guess0 > 30:
print('你大大大大的高估了老詹的得分,他得分肯定低於或等於30分的。告訴你正確答案吧:', score0, '分!')
elif guess0 > 20 and guess0 < 25 and score0 >= 25:
print('你猜的這個分值太小了,已經低於25分了。告訴你正確答案吧:',score0,'分!')
elif guess0 >= 25 and score0 < 25:
print('你高估了老詹的得分,他沒得到25分以上。告訴你正確答案吧:',score0,'分!')
elif guess0 >= 28 and score0 < 23:
print('你大大的高估了老詹的得分,你是詹吹麼?告訴你正確答案吧:',score0,'分!')
else:
print('很遺憾猜錯了,差一點哦,告訴你正確答案吧:',score0,'分!')
嘗試測試一下:
請猜下老詹這賽季場均多少分:
1
<class 'int'>
<class 'int'>
不要太小看老漢,他得分肯定大於20分的。告訴你正確答案吧: 27 分!
請猜下老詹這賽季場均多少分:
19
<class 'int'>
<class 'int'>
不要太小看老漢,他得分肯定大於20分的。告訴你正確答案吧: 29 分!
竟然第三次就猜對了,哈哈!繼續測試:
請猜下老詹這賽季場均多少分:
21
<class 'int'>
<class 'int'>
恭喜你猜對了,這賽季老詹場均: 21 分!
請猜下老詹這賽季場均多少分:
25
<class 'int'>
<class 'int'>
很遺憾猜錯了,差一點哦,告訴你正確答案吧: 27 分!
請猜下老詹這賽季場均多少分:
28
<class 'int'>
<class 'int'>
你高估了老詹的得分,他沒得到25分以上。告訴你正確答案吧: 21 分!
請猜下老詹這賽季場均多少分:
30
<class 'int'>
<class 'int'>
很遺憾猜錯了,差一點哦,告訴你正確答案吧: 27 分!
請猜下老詹這賽季場均多少分:
30
<class 'int'>
<class 'int'>
你高估了老詹的得分,他沒得到25分以上。告訴你正確答案吧: 23 分!
請猜下老詹這賽季場均多少分:
31
<class 'int'>
<class 'int'>
你大大大大的高估了老詹的得分,他得分肯定低於或等於30分的。告訴你正確答案吧: 20 分!
Python3.x已經沒有raw_input() 了,只有input(), 用法功能跟Python2.x中的raw_input() 一樣。
以上便是《Python學習03講》所有內容,更多python學習請繼續關注我的博客——風起怨江南,不定期更新,原創不易,如果喜歡請點贊和關注,謝謝大家的支持!想獲得更多免費的學習資料請添加我的微信公衆號——風起怨江南,謝謝大家的關注和支持!