python全棧開發-Day2 布爾、流程控制、循環
python全棧開發-Day2 布爾 流程控制 循環
一、布爾
1、概述
#布爾值,一個True一個False #計算機俗稱電腦,即我們編寫程序讓計算機運行時,應該是讓計算機無限接近人腦,或者說人腦能幹什麽,計算機就應該能幹什麽,
人腦的主要作用是數據運行與邏輯運算,此處的布爾類型就模擬人的邏輯運行,即判斷一個條件成立時,用True標識,不成立則用False標識
1 a=3 2 b=5 3 4 a > b #不成立就是False,即假 5 #False 6 7 a < b #成立就是True, 即真 8 #True 9 10 #接下來就可以根據條件結果來幹不同的事情了:11 if a > b: 12 print(a is bigger than b ) 13 14 else : 15 print(a is smaller than b ) 16 #上面意味著,計算機已經可以像人腦一樣根據判斷結果不同,來執行不同的動作。
2、布爾類型的重點知識!!!:
#所有數據類型都自帶布爾值 1、None,0,空(空字符串,空列表,空字典等)三種情況下布爾值為False 2、其余均為真
3、 重點:
#1.可變類型:在id不變的情況下,value可以變,則稱為可變類型,如列表,字典 #2. 不可變類型:value一旦改變,id也改變,則稱為不可變類型(id變,意味著創建了新的內存空間)
二、 流程控制之if...else
既然我們編程的目的是為了控制計算機能夠像人腦一樣工作,那麽人腦能做什麽,就需要程序中有相應的機制去模擬。
人腦無非是數學運算和邏輯運算,對於數學運算在上一節我們已經說過了。對於邏輯運算,即人根據外部條件的變化而做出不同的反映,比如:
1、如果:女人的年齡>30歲,那麽:叫阿姨
age_of_girl=31 if age_of_girl > 30: print(‘阿姨好‘)
2、 如果:女人的年齡>30歲,那麽:叫阿姨,否則:叫小姐
age_of_girl=18 if age_of_girl > 30: print(‘阿姨好‘) else: print(‘小姐好‘)
3、 如果:女人的年齡>=18並且<22歲並且身高>170並且體重<100並且是漂亮的,那麽:表白,否則:叫阿姨
age_of_girl=18 height=171 weight=99 is_pretty=True if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: print(‘表白...‘)else: print(‘阿姨好‘)
4、如果:成績>=90,那麽:優秀
如果成績>=80且<90,那麽:良好
如果成績>=70且<80,那麽:普通
其他情況:很差
score=input(‘>>: ‘) score=int(score) if score >= 90: print(‘優秀‘) elif score >= 80: print(‘良好‘) elif score >= 70: print(‘普通‘) else: print(‘很差‘)
if 條件1: 縮進的代碼塊 elif 條件2: 縮進的代碼塊 elif 條件3: 縮進的代碼塊 ...... else: 縮進的代碼塊
三、 流程控制之while循環
1 、為何要用循環
#上節課我們已經學會用if .. else 來猜年齡的遊戲啦,但是只能猜一次就中的機率太小了,如果我想給玩家3次機會呢?
就是程序啟動後,玩家最多可以試3次,這個怎麽弄呢?你總不會想著把代碼復制3次吧。。。。
age_of_oldboy = 48 guess = int(input(">>:")) if guess > age_of_oldboy : print("猜的太大了,往小裏試試...") elif guess < age_of_oldboy : print("猜的太小了,往大裏試試...") else: print("恭喜你,猜對了...") #第2次 guess = int(input(">>:")) if guess > age_of_oldboy : print("猜的太大了,往小裏試試...") elif guess < age_of_oldboy : print("猜的太小了,往大裏試試...") else: print("恭喜你,猜對了...") #第3次 guess = int(input(">>:")) if guess > age_of_oldboy : print("猜的太大了,往小裏試試...") elif guess < age_of_oldboy : print("猜的太小了,往大裏試試...") else: print("恭喜你,猜對了...") #即使是小白的你,也覺得的太low了是不是,以後要修改功能還得修改3次,因此記住,寫重復的代碼是程序員最不恥的行為。 那麽如何做到不用寫重復代碼又能讓程序重復一段代碼多次呢? 循環語句就派上用場啦
2 、條件循環:while,語法如下
while 條件: # 循環體 # 如果條件為真,那麽循環體則執行,執行完畢後再次循環,重新判斷條件。。。 # 如果條件為假,那麽循環體不執行,循環終止
#打印0-10 count=0 while count <= 10: print(‘loop‘,count) count+=1 #打印0-10之間的偶數 count=0 while count <= 10: if count%2 == 0: print(‘loop‘,count) count+=1 #打印0-10之間的奇數 count=0 while count <= 10: if count%2 == 1: print(‘loop‘,count) count+=1
3 、死循環
import time #調用模塊後面會講 num=0 while True: print(‘count‘,num) time.sleep(1) num+=1
4 、循環嵌套與tag
tag=True #定義真 while tag: ...... while tag: ........ while tag: tag=False #定義假
#練習,要求如下: 1 循環驗證用戶輸入的用戶名與密碼 2 認證通過後,運行用戶重復執行命令 3 當用戶輸入命令為quit時,則退出整個程序
1 #實現一: 2 name=‘egon‘ 3 password=‘123‘ 4 5 while True: 6 inp_name=input(‘用戶名: ‘) 7 inp_pwd=input(‘密碼: ‘) 8 if inp_name == name and inp_pwd == password: 9 while True: 10 cmd=input(‘>>: ‘) 11 if not cmd:continue 12 if cmd == ‘quit‘: 13 break 14 print(‘run <%s>‘ %cmd) 15 else: 16 print(‘用戶名或密碼錯誤‘) 17 continue 18 break 19 20 #實現二:使用tag 21 name=‘egon‘ 22 password=‘123‘ 23 24 tag=True 25 while tag: 26 inp_name=input(‘用戶名: ‘) 27 inp_pwd=input(‘密碼: ‘) 28 if inp_name == name and inp_pwd == password: 29 while tag: 30 cmd=input(‘>>: ‘) 31 if not cmd:continue 32 if cmd == ‘quit‘: 33 tag=False 34 continue 35 print(‘run <%s>‘ %cmd) 36 else: 37 print(‘用戶名或密碼錯誤‘)
4 、break與continue
#break用於退出本層循環 while True: print "123" break print "456" #continue用於退出本次循環,繼續下一次循環 while True: print "123" continue print "456"
5 、while+else
#與其它語言else 一般只與if 搭配不同,在Python 中還有個while ...else 語句,while 後面的else 作用是指,
當while 循環正常執行完,中間沒有被break 中止的話,就會執行else後面的語句 count = 0 while count <= 5 : count += 1 print("Loop",count) else: print("循環正常執行完啦") print("-----out of while loop ------") 輸出 Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 循環正常執行完啦 -----out of while loop ------ #如果執行過程中被break啦,就不會執行else的語句啦 count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("循環正常執行完啦") print("-----out of while loop ------") 輸出 Loop 1 Loop 2 -----out of while loop ------
四 、流程控制之for循環
1 叠代式循環:for,語法如下
for i in range(10):
縮進的代碼塊
2 break與continue(同上)
3 循環嵌套
#打印九九乘法表 for i in range(1,10): for j in range(1,i+1): print(‘%s*%s=%s‘ %(i,j,i*j),end=‘ ‘) #print有默認的換行,這裏就把默認的換行改成空的字符串 print()
分析 如何打印金字塔 ‘‘‘ #max_level=5 * #current_level=1,空格數=4,*號數=1 *** #current_level=2,空格數=3,*號數=3 ***** #current_level=3,空格數=2,*號數=5 ******* #current_level=4,空格數=1,*號數=7 ********* #current_level=5,空格數=0,*號數=9 #數學表達式 空格數=max_level-current_level *號數=2*current_level-1 ‘‘‘ #實現 max_level=5 for current_level in range(1,max_level+1): for i in range(max_level-current_level): print(‘ ‘,end=‘‘) #在一行中連續打印多個空格 for j in range(2*current_level-1): print(‘*‘,end=‘‘) #在一行中連續打印多個空格 print()
python全棧開發-Day2 布爾、流程控制、循環