Python程序語言指定任何非0和非空的布爾值爲true,0 或者空的布爾值爲false。python
Python 編程中的 if判斷語句用於控制程序的執行,基本形式爲:git
if 條件:編程
子代碼1app
子代碼2ide
子代碼3oop
…………ui
else:spa
子代碼4code
子代碼5orm
子代碼6
其中"判斷條件"成立時(非零),則執行後面的語句,而執行內容能夠多行,以縮進來區分表示同一範圍。
else 爲可選語句,當須要在條件不成立時執行內容則能夠執行相關語句
具體舉慄說明
score=input('>>: ') score=int(score) if score >= 90: print('A')#用戶輸入的數大於等於90時走這裏 elif score >=80: print('B')#用戶輸入的數大於等於80時走這裏 elif score >=70: print('C')#用戶輸入的數大於等於70時走這裏 elif score >=60: print('D')#用戶輸入的數大於等於60時走這裏 else:#用戶輸入的數不符合以上規範時走這裏 print('E')
python 的多個條件判斷,用 elif 來實現,若是須要對多個條件進行同時判斷時,可使用or和and, or (或)表示兩個條件有一個成立時判斷條件成功;and (與)表示只有兩個條件同時成立的狀況下,判斷條件才成功。
num1=6 num2=10 if num1>3 and num2<20: print('num1>3而且num2<20同時成立時走這裏') else: print('有一個條件不知足') if num1>3 or num2<5: print(' 只要num1>3和num2<5二者中走一個成立就走這裏') else: print('兩個條件都沒有被知足')
what's the while 循環?
當程序須要循環使用某段代碼時,對這段代碼進行復制粘貼就能夠,但是這是極其low的方法。咱們可使用while循環。
while 語句用於循環執行程序,即在某條件下,循環執行某段程序,以處理須要重複處理的相同任務。執行語句能夠是單個語句或語句塊。判斷條件能夠是任何表達式,任何非零、或非空的值均爲true。當判斷條件假false時,循環結束。
基本形式爲:
while 條件:
循環體的代碼1
循環體的代碼2
循環體的代碼3
count=0 while count < 10: print(count) count+=1 while True: #死循環 print('ok') while 1: #死循環 print('ok')
當while的條件始終爲True或1(1就表明True,0表明False)時,循環就進入了死循環,即循環永遠不會結束。死循環是有應用場景的,不過最後確定須要某個機制幫助咱們跳出死循環,這裏就用到了break功能。
break:跳出本層循環
break的功能就是時循環結束,不管原來的代碼進行到何種程度,只要碰到break,這層縮進的代碼就結束,接下來運行上一層縮進的內容。下面用代碼舉個栗子
count=0#初始的count值爲0 while count < 10:#當count<10時執行縮進的語句 if count == 5:#當count的值等於5時執行縮進語句 break#當count的值等於5時中止循環 print(count)#當count的值不等於5時執行 count+=1#即count=count+1 print('循環結束')#中止循環後執行
continue:跳出本次循環
continue 語句用來告訴Python跳過當前循環的剩餘語句,而後繼續進行下一輪循環。它與break不一樣的地方是break一執行本層的循環就終止了而後執行while循環以後的同級代碼,而continue只是使continue之後的代碼被跳過,循環繼續執行,即碰到continue後本次循環結束進入下一次循環。下面用代碼舉個栗子
#輸出0123789 count=0#初始的count值爲0 while count < 10:#當count<10時執行縮進語句 if count >=4 and count <=6:#當count大於等於4而且小於等於6時執行縮進語句 count += 1#count=count + 1 continue#本次循環結束,如下代碼不執行,返回while位置 print(count) count+=1
while循環也能夠和else連用,而且在最後執行,並且只能在while循環沒有break打斷的狀況下才執行。
嵌套的定義:在循環中又套用了循環,具體實例會在下面的習題中出現
what's the for 循環?
與while相似也是循環語句,for循環能夠遍歷任何序列的項目,可循環取出字符串、列表、元祖、字典中的各元素。
基本的語法格式爲
for iterating_var in sequence: statements(s)
用代碼舉慄說明
msg1='hello' msg2=['a','b','c','d','e'] msg3=('a','b','c','d','e') for i in range(len(msg1)):#range是範圍,即當i在msg1的長度範圍之內時執行如下代碼 print(i,msg1[i])#輸出的是元素的位置序數和元素 #結果爲1 h # 2 e # 3 l # 4 l # 5 o #range顧頭不顧尾,默認從0開始 for i in range(1,10,1):#最後一個1的意思是步距爲1 print(i) #for循環也可與break、continue、else連用,方法與while類似
用for循環對字典進行遍歷
#循環取字典的key for k in info_dic: print(k) #循環取字典的value for val in info_dic.values(): print(val) #循環取字典的items for k,v in info_dic.items(): #k,v=('name', 'egon') print(k,v)
這裏利用for循環順便補充幾個小知識點
albums = ('Poe', 'Gaudi', 'Freud', 'Poe2') years = (1976, 1987, 1990, 2003) #sorted:排序 for album in sorted(albums): print(album)#字符串按長度排序 #reversed:翻轉 for album in reversed(albums): print(album) #enumerate:返回項和 for i in enumerate(albums,100):#默認從0開始 print(i) '''(100, 'Poe') (101, 'Gaudi') (102, 'Freud') (103, 'Poe2')''' #zip:組合,一一對應並以元祖的形式返回 for i in zip(albums,years): print(i) '''('Poe', 1976) ('Gaudi', 1987) ('Freud', 1990) ('Poe2', 2003)'''
for循環和while循環同樣均可以進行嵌套,下面用一個九九乘法表做爲舉例。
for line in range(1,10): for row in range(1,line+1): print('%s*%s=%s'%(line,row,line*row),end=' ') print() #print默認end='\n',即會自動回車,這裏設置end=' '就不會自動換行了
這裏插一個小知識點
佔位符:%s(能夠爲字符串佔也能夠爲數字),%d(只能做爲數字的佔位符)。
佔位符即實現佔位用的,以後能夠進行傳值。傳值方式如上面的九九乘法表中所示,每一個佔位符只能傳一個值
最後引入幾道習題,幫助更好的瞭解while循環
習題一:輸出1到100全部的數字
#使用while循環 count=0 while count<=100:#只要比100小就不斷執行如下代碼 print('number',count) count+=1#即每執行一次就把count+1 #當count>100時,判斷就爲false,自動跳出循環 #使用for循環 for i in range(101):#顧頭不顧尾 print(i)
習題二:輸出1到100內的全部偶數,包括100
#使用while循環 count = 0 while count <= 100 : if count % 2 == 0:#是偶數 print('number',count) count+=1 #使用for循環 for i in range(1,101): if i%2==0: print(i)
習題三:輸出1到100內的全部奇數,包括100
#使用while循環 count = 0 while count <= 100 : if count % 2 == 1:#是奇數 print('loop',count) count+=1 #使用for循環 for i in range (1,100): if i%2==1: print(i)
習題四:輸出1-2+3-4+5-6+7-8....+99的和
sum=0 for i in range(1,100): if i%2==1: sum+=i elif i%2==0: sum+=-i print(sum)
習題五:輸出1-9,並在最後輸出一段話
count=0 while count < 10: if count == 3: count+=1 continue print(count) count+=1 else: #最後執行 print('在最後執行,而且只有在while循環沒有被break打斷的狀況下才執行') #0 #1 #2 #4 #5 #6 #7 #8 #9 #在最後執行,而且只有在while循環沒有被break打斷的狀況下才執行
習題六:用戶登陸程序交互小習題
while True:#死循環 name=input('please input your name: ')#讓用戶自行輸入名字 password=input('please input your password: ')#讓用戶自行輸入密碼 if name == 'jack' and password == '123':#若是輸入的名字爲jack而且密碼是123 print('login successfull')#輸出登錄成功 while True:#死循環 cmd=input('>>: ')#讓用戶輸入命令 if cmd == 'quit':#若是輸入的命令是quit的話 break#本層死循環結束,即內層死循環結束 print('====>',cmd)#若是輸入的命令不是quit的話,打印輸入的命令 break#本層死循環結束,即外層死循環結束 else:#若是輸入的名字不爲jack或者密碼不是123 print('name or password wrong') #輸出錯誤,並從新輸入名字和密碼
習題七:猜年齡的遊戲
#容許猜3次喬布斯的年齡 JOBS_AGE=55#定義一個常量,喬布斯55歲 count=1#次數爲1 while True:#死循環 if count>3:#當次數超過3時 break#循環結束 age=input('猜猜年齡:')#用戶交互,讓用戶輸入他猜的年齡 age=int(age)#輸入的內容是字符串的格式,需強轉成數字格式纔可與數字進行比較 if age>JOBS_AGE: print("你猜的太大啦") elif age<JOBS_AGE: print("你猜的過小啦") else: print("恭喜你猜對了") break#猜對了之後執行,即循環結束 count+=1#沒猜對的狀況下count會加1,當count>3的時候就不讓猜咯
進階大做業一:實現簡易購物清單
要求以下:給出如下購物列表,用戶輸入想要購買的物品,以後讓用戶輸入想要購買該物品的數量,打印物品名、價格即數量。用戶可循環輸入
msg_dic={
'iPhone':4000,
'apple':10,
'mac':8000,
'lenovo':3000,
'chicken':28
}
msg_dic={ 'iPhone':4000, 'apple':10, 'mac':8000, 'lenovo':3000, 'chicken':28 } goods_l=[] while True: for k in msg_dic: print('NAME:<{name}> PRICE:<{price}>'.format(name=k,price=msg_dic[k])) name=input('please input your goods name:').strip() if len(name)==0 or name not in msg_dic:continue while True: count=input('please input your count:').strip() if count.isdigit():break goods_l.append((name,msg_dic[name],int(count))) print(goods_l)
進階大做業二:實現簡易工資條
要求以下:給出一個系統讓用戶輸入本身的名字、密碼、工資和工做時長,系統中可供用戶查詢本身的總工資和用戶身份,查詢結束後可退出程序。(jobs是頂級用戶(super user),cook和cue是普通用戶(normal user),其餘皆爲不知名用戶(unknown user)
tag = True while tag: user = input("請輸入用戶名:") if user == "": print("用戶名不能爲空,請從新輸入:") continue password = input("請輸入密碼:") if password == "": print("密碼不能爲空,請從新輸入:") continue work = input("請輸入工做了幾個月") if work == "" or work.isdigit() == False: print("工齡不能爲空且必須爲整數,請從新輸入:") continue money = input("請輸入工資:") if money == "" or money.isdigit() == False: print("工資不能爲空且必須爲整數,請從新輸入:") continue print( ''' 1查詢總工資 2查詢用戶身份 3退出程序 ''' ) while tag: choose = input('>>') if choose == "" or choose.isdigit() == False: print("輸入有誤,請從新輸入") continue if choose == '1': print(''' 總工資爲:%s 1查詢總工資 2查詢用戶身份 3退出程序 ''' % (int(work)*int(money))) elif choose == '2': if user == 'jobs': print(''' super user 1查詢總工資 2查詢用戶身份 3退出程序 ''') elif user == 'cook' or 'cue': print(''' normal user 1查詢總工資 2查詢用戶身份 3退出程序 ''') else: print(''' unknow user 1查詢總工資 2查詢用戶身份 3退出程序 ''') elif choose == '3': tag = False continue else: print('沒有這個選項') continue
進階大做業三:實現省市縣三級菜單
要求以下:給出一個三級菜單,要求能循環輸出省、市、縣
menu = { '浙江省':{ '杭州市':{ '西湖區':{ '西湖':{}, '雷峯塔':{}, '宋城':{} }, '臨安區':{ '天目山':{}, '大明山':{}, '白水澗':{}, }, '蕭山區':{ '機場':{}, }, }, '餘杭區':{ '西溪溼地':{}, '良渚遺址':{}, '塘棲古鎮':{}, }, '上城區':{}, '下城區':{}, }, '上海':{ '閔行':{ "人民廣場":{ '炸雞店':{} } }, '閘北':{ '火車戰':{ '攜程':{} } }, '浦東':{}, }, '山東':{}, }
menu = { '浙江省':{ '杭州市':{ '西湖區':{ '西湖':{}, '雷峯塔':{}, '宋城':{} }, '臨安區':{ '天目山':{}, '大明山':{}, '白水澗':{}, }, '蕭山區':{ '機場':{}, }, }, '餘杭區':{ '西溪溼地':{}, '良渚遺址':{}, '塘棲古鎮':{}, }, '上城區':{}, '下城區':{}, }, '上海':{ '閔行':{ "人民廣場":{ '炸雞店':{} } }, '閘北':{ '火車戰':{ '攜程':{} } }, '浦東':{}, }, '山東':{}, } exit_flag = False current_layer = menu layers = [menu] print(layers) while not exit_flag: for k in current_layer: print(k) choice = input(">>:").strip() if choice == "b": current_layer = layers[-1] #print("change to laster", current_layer) layers.pop() elif choice not in current_layer:continue else: layers.append(current_layer) current_layer = current_layer[choice]