Python基礎(chǔ)語法7
用數(shù)據(jù)做判斷:布爾值
計算機的邏輯判斷扣讼,只有兩種結(jié)果,就是True(英文意思是“真”)和False(英文意思是“假”)荔燎,沒有灰色地帶销钝。這個計算真假的過程,叫做【布爾運算】座享。
True和False,也就叫做【布爾值】
例:
print(3 < 5)
print(3 > 5)
print('長安' == '長安')
print('長安' != '金陵')
'''
True
False
True
True
'''
- print()括號內(nèi)的計算其實就是【布爾運算】丈秩。終端上出現(xiàn)的True和False我們稱為【布爾值】
- 第1行和第2行代碼很簡單淳衙。后面兩行:兩個字符串'長安'相等滤祖,結(jié)果正確瓶籽,所以打印為True。而字符串'長安'和字符串'金陵'做比較汤求,結(jié)果不相等严拒,!=代表不等號,結(jié)果正確挤牛,打印為True种蘸。
- 只有當(dāng)條件判斷為True時航瞭,if和while后面的子句才會執(zhí)行下去。
- 例
while False:
print('while False')
#終端上不顯示任何結(jié)果
- while循環(huán)執(zhí)行章办,必須要while后的條件為“真”滨彻,而【布爾值】False本身就是“假”,所以這個循環(huán)一次都沒運行就結(jié)束了
- 同理翰舌,3>5這個條件恒為“假”冬骚,如果把while False換成while 3>5,效果會是一樣的——什么都不會出現(xiàn)庇麦。
while 3>5:
print('while False')
- 如果用while True或者while 3<5來做條件,程序?qū)幌薮螖?shù)地運行山橄,陷入【死循環(huán)】
- 【布爾值】對條件判斷語句有一樣的效果:
if False:
print('if False')
if True:
print('if True')
#if True
數(shù)據(jù)做判斷
兩個數(shù)值作比較
比較運算符
- 特別提醒:在代碼中航棱,A == B表示A和B相等,==表示相等關(guān)系它抱;而=表示給變量賦值朴艰。=和==雖然長得相似,但沒有任何關(guān)系侮穿。
直接用數(shù)值做運算
if 1:
print('熊貓')
- 整數(shù)1在這里就是作為一個條件亲茅,被判斷為真(True)金矛。這就是數(shù)值本身作為一個條件,被判斷真假的情況娶耍。
真假判斷
- None饼酿,它代表的是【空值】故俐,自成一派,數(shù)據(jù)類型是NoneType辑舷。要注意它和0的區(qū)別槽片,0是整數(shù)0肢础,可并非什么都沒有
- 可以使用bool()函數(shù)來查看一個數(shù)據(jù)會被判斷為真還是假传轰。這個函數(shù)的用法與type()函數(shù)相似谷婆,在bool()函數(shù)括號中放入我們想要判斷真假的數(shù)據(jù),然后print出來即可期贫。
print('以下數(shù)據(jù)判斷結(jié)果都是【假】:')
print(bool(False))
print(bool(0))
print(bool(''))
print(bool(None))
print('以下數(shù)據(jù)判斷結(jié)果都是【真】:')
print(bool(True))
print(bool(1))
print(bool('abc'))
布爾值之間的運算
and唯灵、or隙轻、not垢揩、in、not in五種運算
a = 1
b = -1
print('以下是and運算')
if a==1 and b==1: # 【b實際上是-1】
print('True')
else:
print('False')
print('以下是or運算')
if a==1 or b==1: # 【b實際上是-1】
print('True')
else:
print('False')
'''
以下是and運算
False
以下是or運算
True
'''
- a==1 and b==1的意思是【a=1并且b=1】斑匪,要兩個條件都滿足蚀瘸,才能判斷為True庶橱,而a==1 or b==1的意思是【a=1或者b=1】,只要兩個條件滿足一個寂嘉,就能判斷為True枫绅。
and
or
- 【not】運算很簡單并淋,表示翻轉(zhuǎn)的意思县耽。not True就等于False镣典,not False就等于True
- 【in】和【not in】兩種運算,【in】的意思是“判斷一個元素是否在一堆數(shù)據(jù)之中”脏嚷,【not in】反之父叙。
not,in,not in
四種新的語句
break語句
break的意思是“打破”趾唱,是用來結(jié)束循環(huán)的,一般寫作if...break
# break語句搭配for循環(huán)
for...in...:
...
if ...:
break
# break語句搭配while循環(huán)
while...(條件):
...
if ...:
break
+if...break的意思是如果滿足了某一個條件夕晓,就提前結(jié)束循環(huán)悠咱。這個只能在循環(huán)內(nèi)部使用。
- 例
for i in range(5):
print('明日復(fù)明日')
if i==3: # 當(dāng)i等于3的時候觸發(fā)
break # 結(jié)束循環(huán)
i = 0
while i<5:
print('明日復(fù)明日')
i = i+1
if i==3: # 當(dāng)i等于3的時候觸發(fā)
break # 結(jié)束循環(huán)
PS:if之下的語句要縮進4個空格(按一次Tab鍵)躬贡,這里的if...break又嵌套在while或for循環(huán)中拂玻,而循環(huán)語句本身又要縮進4個空格宰译。這樣一來,break就縮進了【4+4=8】個空格(按兩次Tab鍵)闯第∽菏茫【注】:Tab鍵和空格鍵不能同時混用。
練習(xí):用python描述故事:
- 《西游記》里面有一個車遲國诲泌,車遲國里面有個陳家莊敷扫,陳家莊的河里有一個鯉魚精,每一年都要陳家莊上供一對童男童女給自己吃绘迁,莊里的人家真是苦不堪言卒密。這種年復(fù)一年的循環(huán)狀態(tài),在唐僧師徒來到這里后膛腐,結(jié)束了鼎俘。因為孫悟空制服了這個鯉魚精贸伐,百姓再也不用受苦了!真好脯丝。
while True:
print('要給妖怪進貢童男童女')
hero = input('大圣來了嗎伏伐?回復(fù):來了or沒來')
if hero == '來了':
break
print('鯉魚精被制服')
continue語句
continue的意思是“繼續(xù)”。這個子句也是在循環(huán)內(nèi)部使用的。當(dāng)某個條件被滿足的時候阱高,觸發(fā)continue語句茬缩,將跳過之后的代碼,直接回到循環(huán)的開始未舟。
# continue語句搭配for循環(huán)
for...in...:
...
if ...:
continue
...
# continue語句搭配while循環(huán)
while...(條件):
...
if ...:
continue
...
- 示例
# continue語句搭配for循環(huán)
for i in range(5):
print('明日復(fù)明日')
if i==3: # 當(dāng)i等于3的時候觸發(fā)
continue # 回到循環(huán)開頭
print('這句話在i等于3的時候打印不出來')
# continue語句搭配while循環(huán)
i = 0
while i<5:
print('明日復(fù)明日')
i = i+1
if i==3: # 當(dāng)i等于3的時候觸發(fā)
continue # 回到循環(huán)開頭
print('這句話在i等于3的時候打印不出來')
練習(xí):西夏公主選駙馬
while True:
q1 = input('第一問:你一生之中裕膀,在什么地方最是快樂逍遙勇哗?')
if q1 != '黑暗的冰窖':
continue
print('答對了欲诺,下面是第二問:')
q2 = input('你生平最愛之人渺鹦,叫什么名字蛹含?')
if q2 != '夢姑':
continue
print('答對了浦箱,下面是第三問:')
q3 = input('你最愛的這個人相貌如何?')
if q3 == '不知道':
break
print('都答對了珍语,你是虛竹竖幔。')
pass語句
- pass語句非常簡單拳氢,它的英文意思是“跳過”
a = int(input('請輸入一個整數(shù):'))
if a >= 100:
pass
else:
print('你輸入了一個小于100的數(shù)字')
- 當(dāng)a>=100的時候,跳過放接,什么都不做留特。其他情況,也就是a<100的時候苟蹈,執(zhí)行一個print語句
- 如果沒有pass來占據(jù)一個位置表示“什么都不做”慧脱,以上的代碼執(zhí)行起來會報錯
else語句
else語句贺喝,我們在條件判斷語句見過【else】,else不但可以和if配合使用氮采,它還能跟for循環(huán)和while循環(huán)配合使用
for i in range(5):
a = int(input('請輸入0來結(jié)束循環(huán)扳抽,你有5次機會:'))
if a == 0:
print('你觸發(fā)了break語句,循環(huán)結(jié)束镰烧,導(dǎo)致else語句不會生效楞陷。')
break
else:
print('5次循環(huán)你都錯過了固蛾,else語句生效了。')
'''
請輸入0結(jié)束循環(huán)艾凯,你有5次機會:9
請輸入0結(jié)束循環(huán)趾诗,你有5次機會:6
請輸入0結(jié)束循環(huán),你有5次機會:0
你觸發(fā)了break語句郑兴,導(dǎo)致else語句不會生效贝乎。
'''
- 當(dāng)循環(huán)中沒有碰到break語句览效,就會執(zhí)行循環(huán)后面的else語句,否則就不會執(zhí)行挽拔。
- 在while循環(huán)中衡招,else的用法也是如此始腾,格式一模一樣:
i = 5
while i:
a = int(input('請輸入0來結(jié)束循環(huán)空执,你有5次機會:'))
i -= 1
if a == 0:
print('你觸發(fā)了break語句辨绊,循環(huán)結(jié)束,導(dǎo)致else語句不會生效宣鄙。')
break
else:
print('5次循環(huán)你都錯過了,else語句生效了苇羡。')
4種循環(huán)語句
循環(huán)小練習(xí):
- 猜24设江,然后讓另一個人猜攘轩。如果他猜的數(shù)比24小度帮,告訴他“太小了”,如果他猜的數(shù)比24大甫菠,告訴他“太大了”寂诱。
num = 24
print('我已經(jīng)想好了一個數(shù)安聘,請你猜一猜:\n')
while True:
yourguess = int(input('請輸入你猜的數(shù)字:'))
if yourguess < num:
print('你猜的數(shù)字小了')
elif yourguess > num:
print('你猜的數(shù)字大了')
else:
print('恭喜你猜對了')
break
-
問題進階
問題進階
num = 24
print('我已經(jīng)想好了一個數(shù)浴韭,請你猜一猜:\n')
chance = 3
while chance:
print('現(xiàn)在你有' + str(i) + '次機會')
chance -= 1
yourguess = int(input('請輸入你猜的數(shù)字:'))
if yourguess < num:
print('你猜的數(shù)字小了')
elif yourguess > num:
print('你猜的數(shù)字大了')
else:
print('恭喜你猜對了')
break
else:
print('3次機會已經(jīng)用完念颈,失敗了')
練習(xí):
- 讓程序收集兩名囚犯的認(rèn)罪情況,進而決定他們的判決:
兩人都認(rèn)罪嗡靡,則各判10年讨彼;一個認(rèn)罪一個抵賴柿祈,則前者判1年哩至,后者判20年菩貌;兩人都抵賴袁辈,各判3年晚缩。只有兩人都不認(rèn)罪,程序才會停止冈敛。
現(xiàn)在有一個社會學(xué)家鸣皂,在不同的人群中做這個實驗寞缝,一旦遇到都不認(rèn)罪的情況,就停止該人群中的實驗滩届。
同時被啼,他希望程序能記錄每一對實驗者的選擇,以及記錄第幾對實驗者都選擇不認(rèn)罪进每。請你幫幫他吧装悲。
listchoice = []
n = 0
while True:
n += 1
print('現(xiàn)已押解第' + str(n) + '對犯人' + ':請審問')
choice_A = input('A的選擇:認(rèn)罪or不認(rèn) ')
choice_B = input('B的選擇:認(rèn)罪or不認(rèn) ')
listchoice.append([choice_A,choice_B])
if choice_A == '認(rèn)罪' and choice_B == '認(rèn)罪':
print('皆為10年之刑')
elif choice_A == '不認(rèn)' and choice_B == '認(rèn)罪':
print('B判1年生闲,A判20年')
elif choice_A == '認(rèn)罪' and choice_B == '不認(rèn)':
print('A判1年跪腹,B判20年')
elif choice_A == '不認(rèn)' and choice_B == '不認(rèn)':
print('停止實驗')
break
else:
n -= 1
continue
print('此為最優(yōu)解')
for i in range(n):
print('第' + str(i + 1) + '對實驗者的選擇是:' + str(listchoice[i]))