跟老齊學(xué)Python之復(fù)習(xí)if語句
基本語句結(jié)構(gòu)
if 判斷條件1:
執(zhí)行語句1……
elif 判斷條件2:
執(zhí)行語句2……
elif 判斷條件3:
執(zhí)行語句3……
else:
執(zhí)行語句4……
只有當(dāng)“判斷條件”的值是True的時(shí)候,才執(zhí)行下面的執(zhí)行語句。
那么,在python中,怎么知道一個(gè)判斷條件是不是真呢?這個(gè)問題我們?cè)谘刍潄y的運(yùn)算符中已經(jīng)講解了一種數(shù)據(jù)類型:布爾類型??梢酝ㄟ^一個(gè)內(nèi)置函數(shù)bool()來判斷一個(gè)條件的結(jié)果True還是False??纯聪旅娴睦?,是不是能夠理解bool()的判斷規(guī)則?
>>> bool("")
False
>>> bool(0)
False
>>> bool('none')
True
>>> bool(False)
False
>>> bool("False")
True
>>> bool(True)
True
>>> bool("True")
True
>>> bool(3>4)
False
>>> bool("b">"a")
True
>>> bool(not "")
True
>>> bool(not True)
False
忘記了怎么辦?看下面的語句:
if 忘記:
復(fù)習(xí)-->眼花繚亂的運(yùn)算符一講
在執(zhí)行語句中,其實(shí)不一定非要把bool()寫上的。如同這樣:
>>> x = 9
>>> if bool(x>7): #條件為True則執(zhí)行下面的
... print "%d more than 7"%x
... else:
... print "%d not more than 7"%x
...
9 more than 7
>>> if x>7:
... print "%d more than 7"%x
... else:
... print "%d not more than 7"%x
...
9 more than 7
以上兩個(gè)寫法是等效的,但是,在實(shí)際的編程中,我們不用if bool(x>7)的格式,而是使用if x>7的樣式,還要特別提醒,如果寫成if (x>7),用一個(gè)括號(hào)把條件表達(dá)式括起來,是不是可以呢?可以,但也不是python提倡的。
>>> if (x>7): #不提倡這么寫,這不是python風(fēng)格
... print "%d more than 7"%x
...
9 more than 7
拉出來溜溜
平時(shí)總有人在不服氣的時(shí)候說“是騾子是馬,拉出來溜溜”,趙本山有一句名言“走兩步”。其本質(zhì)都是說“光說不練是假把式”。今天收到一個(gè)朋友的郵件,也詢問,在學(xué)習(xí)python的時(shí)候,記不住python的內(nèi)容。其實(shí)不用記,我在前面的課程中已經(jīng)反復(fù)講過了。但是,在應(yīng)用中,會(huì)越來越熟練。
下面就做一個(gè)練習(xí),要求是:
接收任何字符和數(shù)字的輸入
判斷輸入的內(nèi)容,如果不是整數(shù)是字符,就告訴給用戶;如果是小數(shù),也告訴用戶
如果輸入的是整數(shù),判斷這個(gè)整數(shù)是奇數(shù)還是偶數(shù),并且告訴給用戶
在這個(gè)練習(xí)中,顯然要對(duì)輸入的內(nèi)容進(jìn)行判斷,以下幾點(diǎn)需要看官注意:
通過raw_input()得到的輸入內(nèi)容,都是str類型
要判斷一個(gè)字符串是否是由純粹數(shù)字組成,可以使用str.isdigit()(建議看官查看該內(nèi)置函數(shù)官方文檔)
下面的代碼是一個(gè)參考:
#! /usr/bin/env python
#coding:utf-8
print "請(qǐng)輸入字符串,然后按下回車鍵:"
user_input = raw_input()
result = user_input.isdigit()
if not result:
print "您輸入的不完全是數(shù)字"
elif int(user_input)%2==0:
print "您輸入的是一個(gè)偶數(shù)"
elif int(user_input)%2!=0:
print "您輸入的是一個(gè)奇數(shù)"
else:
print "您沒有輸入什么呢吧"
特別提醒列為,這個(gè)代碼不是非常完善的,還有能夠修改的地方,看官能否完善之?
再來一個(gè)如何?
已知一個(gè)由整數(shù)構(gòu)成的list,從中跳出奇數(shù)和偶數(shù),并且各放在一個(gè)list中。
請(qǐng)看官在看下面的參考代碼之前,自己寫一寫。
#!/usr/bin/env python
#coding:utf-8
import random
numbers = [random.randint(1,100) for i in range(20)] #以list解析的方式得到隨機(jī)的list
odd = []
even = []
for x in numbers:
if x%2==0:
even.append(x)
else:
odd.append(x)
print numbers
print "odd:",odd
print "even:",even
用這個(gè)例子演示一下if在list解析中的應(yīng)用??茨懿荒芾^續(xù)改進(jìn)一些呢?
可以將循環(huán)的那部分用下面的list解析代替
#!/usr/bin/env python
#coding:utf-8
import random
numbers = [random.randint(1,100) for i in range(20)] #以list解析的方式得到隨機(jī)的list
odd = [x for x in numbers if x%2!=0]
even = [x for x in numbers if x%2==0]
print numbers
print "odd:",odd
print "even:",even
一個(gè)有趣的賦值
對(duì)賦值,看官應(yīng)該比較熟悉了吧,如果要復(fù)習(xí),請(qǐng)看《[賦值,簡(jiǎn)單也不簡(jiǎn)單]》(./127.md)以及《[正規(guī)地說一句]》(./201.md)的相關(guān)內(nèi)容。
這里說的有趣賦值是什么樣子的呢?請(qǐng)看:
>>> name = "qiwsir" if "laoqi" else "github"
>>> name
'qiwsir'
>>> name = 'qiwsir' if "" else "python"
>>> name
'python'
>>> name = "qiwsir" if "github" else ""
>>> name
'qiwsir'
總結(jié)一下:A = Y if X else Z
什么意思,結(jié)合前面的例子,可以看出:
如果X為真,那么就執(zhí)行A=Y
如果X為假,就執(zhí)行A=Z
再看看上面的例子,是不是這樣執(zhí)行呢?
if語句似乎簡(jiǎn)單,但是在編程時(shí)間中常用到。勤加練習(xí)吧。
相關(guān)文章
python實(shí)現(xiàn)隨機(jī)漫步方法和原理
在本篇文章里小編給大家整理了關(guān)于python如何實(shí)現(xiàn)隨機(jī)漫步的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-06-06Python?"手繪風(fēng)格"數(shù)據(jù)可視化方法實(shí)例匯總
這篇文章主要給大家介紹了關(guān)于Python?"手繪風(fēng)格"數(shù)據(jù)可視化方法實(shí)現(xiàn)的相關(guān)資料,本文分別給大家?guī)砹薖ython-matplotlib手繪風(fēng)格圖表繪制、Python-cutecharts手繪風(fēng)格圖表繪制以及Python-py-roughviz手繪風(fēng)格圖表繪制,需要的朋友可以參考下2022-02-02Python中Array特性與應(yīng)用實(shí)例深入探究
這篇文章主要為大家介紹了Python中Array特性與應(yīng)用實(shí)例深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Python對(duì)ElasticSearch獲取數(shù)據(jù)及操作
這篇文章主要為大家詳細(xì)介紹了Python對(duì)ElasticSearch獲取數(shù)據(jù)及操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Python使用scrapy抓取網(wǎng)站sitemap信息的方法
這篇文章主要介紹了Python使用scrapy抓取網(wǎng)站sitemap信息的方法,涉及Python框架scrapy的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04解決python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題
這篇文章主要介紹了python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題及解決方法,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04matlab中實(shí)現(xiàn)矩陣刪除一行或一列的方法
下面小編就為大家分享一篇matlab中實(shí)現(xiàn)矩陣刪除一行或一列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04