Python全棧之for循環(huán)
1. 雙向循環(huán)的練習(xí)
# 1.用兩個(gè)循環(huán)完成十行十列的小星星 j = 0 while j < 10: # 打印星星 i = 0 while i < 10: print("*",end="") i+=1 # 打印換行 print() j += 1 # 2.用兩個(gè)循環(huán)完成十行十列隔列換色的小星星 """ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★ """ i = 0 while i < 10: # 打印一行黑白相間的星星 j = 0 while j < 10: if j % 2 == 0: print("☆",end="") else: print("★",end="") j +=1 # 打印換行 print() i+=1 # 3.用兩個(gè)循環(huán)完成十行十列隔行換色的小星星 """ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ """ """ 外層的循環(huán)i動(dòng)的慢 內(nèi)層的循環(huán)j動(dòng)的快 外層的i動(dòng)一次, 內(nèi)層的循環(huán)動(dòng)10次 """ i = 0 while i < 10 : j = 0 while j < 10: if i % 2 == 0: print("☆",end="") else: print("★",end="") j +=1 print() i +=1 # 4.99乘法表 # 方向一 i = 1 while i <= 9: # 打印對(duì)應(yīng)的表達(dá)式 j = 1 while j <= i: print("%d*%d=%2d " % (i,j,i*j) ,end="" ) j+=1 # 打印換行 print() i +=1 # 方向二 i = 9 while i >= 1: # 打印對(duì)應(yīng)的表達(dá)式 j = 1 while j <= i: print("%d*%d=%2d " % (i,j,i*j) ,end="" ) j+=1 # 打印換行 print() i -= 1 print("<====================>") # 方向三 i = 1 while i <= 9 : kongge = 9 - i # 打印空格 while kongge > 0: print(" ",end="") kongge -= 1 # 打印表達(dá)式 j = 1 while j <= i: print("%d*%d=%2d " % (i,j,i*j) ,end="" ) j+=1 # 換行 print() i +=1 print("<===============>") # 方向四 i = 9 while i >= 1 : kongge = 9 - i # 打印空格 while kongge > 0: print(" ",end="") kongge -= 1 # 打印表達(dá)式 j = 1 while j <= i: print("%d*%d=%2d " % (i,j,i*j) ,end="" ) j+=1 # 打印換行 print() i -=1 # 求吉利數(shù)字 100 ~ 999 之間 找 111 222 333 123 456 654 321 ... """ // 可以獲取一個(gè)數(shù)高位 % 可以獲取一個(gè)數(shù)低位 baiwei = 345 // 100 shiwei = 345 // 10 % 10 gewei = 345 % 10 print(gewei) """ # 方法一 i = 100 while i <= 999: baiwei = i // 100 shiwei = i // 10 % 10 gewei = i % 10 if shiwei == gewei and shiwei == baiwei : print(i) # 123 elif shiwei == gewei - 1 and shiwei == baiwei + 1: print(i) # 987 elif shiwei == gewei + 1 and shiwei == baiwei - 1: print(i) i +=1 # 方法二 print("<====>") i = 100 while i <= 999: strvar = str(i) # print(strvar, type(strvar)) gewei = int(strvar[-1]) shiwei = int(strvar[1]) baiwei = int(strvar[0]) if shiwei == gewei and shiwei == baiwei : print(i) # 123 elif shiwei == gewei - 1 and shiwei == baiwei + 1: print(i) # 987 elif shiwei == gewei + 1 and shiwei == baiwei - 1: print(i) i +=1 # 方法三 print("<====>") i = 100 while i <= 999: strvar = str(i) # print(strvar, type(strvar)) gewei = int(strvar[-1]) shiwei = int(strvar[1]) baiwei = int(strvar[0]) if 2 * shiwei == gewei + baiwei and (shiwei == gewei + 1 or shiwei == gewei -1 ): print(i) elif gewei == shiwei and shiwei == baiwei: print(i) i +=1 # 百錢買百雞 # 公雞一個(gè)五塊錢,母雞一個(gè)三塊錢,小雞三個(gè)一塊錢,現(xiàn)在要用一百塊錢買一百只雞,問公雞、母雞、小雞各多少只? """ 窮舉法:把數(shù)據(jù)拿出來一個(gè)一個(gè)試 x = [1,2] y = [3,4] z = [5,6] x+y+z = 10 1 + 3 + 5 = 9 1 + 3 + 6 = 10 bingo 1 + 4 + 5 = 10 bingo 1 + 4 + 6 = 11 2 + 3 + 5 = 10 bingo 2 + 3 + 6 = 11 2 + 4 + 5 = 11 2 + 4 + 6 = 12 """ """ 公雞 : x 母雞 : y 小雞: z 雞的數(shù)量:x + y + z = 100 雞的價(jià)格:5 * x + 3 * y + 1/3*z = 100 """ x = 0 while x <= 20: y = 0 while y <= 33: z = 0 while z <= 100: if x+y+z == 100 and 5*x + 3 * y + 1/3*z == 100 : print(x,y,z) z += 1 y +=1 x += 1
2. break_pass_continue的使用
關(guān)鍵字的使用 pass break continue
# pass 過 (代碼塊中的占位符) """ if 20 == 20: pass while True: pass """ # break 終止當(dāng)前循環(huán) (只能用在循環(huán)之中) # 1 ~ 10 遇到5終止循環(huán) i = 1 while i <= 10: print(i) if i == 5: break i +=1 i = 1 while i <= 3: j = 1 while j <=3: if j == 2: break print(i,j) j+=1 i +=1 # 1 1 # 2 1 # 3 1 """ if 5 == 5: error break """ # continue 跳過當(dāng)前循環(huán),從下一次循環(huán)開始 # 打印 1 ~ 10 跳過5 i = 1 while i <= 10: if i == 5: # 在跳過之前,因?yàn)闀?huì)終止執(zhí)行后面的代碼,從下一次循環(huán)開始 # 為了避免死循環(huán),手動(dòng)加1 i += 1 continue print(i) i +=1 # 1 ~ 100 打印所有不含有4的數(shù)字 # 方法一 print("<============>") i = 1 while i <= 100: strvar = str(i) # print(strvar) if "4" in strvar: i += 1 continue print(i) i +=1 # 方法二 print("<============>") i = 1 while i <= 100: if i // 10 == 4 or i % 10 == 4: i+=1 continue print(i) i+=1
3. for循環(huán)
while
: 邏輯比較復(fù)雜用while
for
: 邏輯比較簡單,遍歷數(shù)據(jù)的話一定是for(while也可以遍歷數(shù)據(jù),但是遍歷的數(shù)據(jù)不能是無序的)
# 遍歷 循環(huán) 迭代 , 把容器中的元素一個(gè)一個(gè)獲取出來 # while循環(huán)在遍歷數(shù)據(jù)時(shí)的局限性 """ lst = [1,2,3,4,5] # ok i = 0 while i < len(lst): print(lst[i]) i+=1 setvar = {"a","b","c"} # not ok i = 0 while i < len(setvar): print(setvar[i]) i+=1 """ # for循環(huán)的基本語法 """ Iterable 可迭代性數(shù)據(jù):1.容器類型數(shù)據(jù) 2.range對(duì)象 3.迭代器 for 變量 in Iterable: code1. """ # 字符串 container = "北京和深圳溫差大概20多度" # 列表 container = [1,2,3,4,4,5] # 元組 container = ("孫開洗","孫健","孫悟空") # 集合 container = {"陳璐","曹靜怡","王志國","鄧鵬","合力"} # 字典 container = {"cl":"風(fēng)流倜儻","cjy":"拳擊選手","wzg":"尋花問柳","dp":"帥氣,祖國的棟梁","hl":"你是個(gè)好人"} # 遍歷數(shù)據(jù) for i in container: print(i) print("<===================>") # 1.遍歷不等長多級(jí)容器 container = [1,2,3,4,("嗄","234",{"馬春配","李虎凌","劉子濤"})] for i in container: # 判斷當(dāng)前元素是否是容器,如果是,進(jìn)行二次遍歷,如果不是,直接打印 if isinstance(i,tuple): # ("嗄","234",{"馬春配","李虎凌","劉子濤"}) for j in i: # 判斷當(dāng)前元素是否是集合,如果是,進(jìn)行三次遍歷,如果不是,直接打印 if isinstance(j,set): # j = {"馬春配","李虎凌","劉子濤"} for k in j : print(k) else: print(j) # 打印數(shù)據(jù) else: print(i) # 2.遍歷不等長多級(jí)容器 container = [("劉玉波","歷史源","張光旭"), ("上朝氣","于朝志"),("韓瑞曉",)] for i in container: for j in i: print(j) # 3.遍歷等長的容器 container = [("馬云","小馬哥","馬春配") , ["王健林","王思聰","王志國"],{"王寶強(qiáng)","馬蓉","宋小寶"}] for a,b,c in container: print(a,b,c) # 變量的解包 a,b,c = "poi" a,b = (1,2) a,b = 1,2 a,b,c = [10,11,12] a,b = {"林明輝","家率先"} a,b = {"lmh":"林明輝","jsx":"家率先"} a,b,c = ("馬云","小馬哥","馬春配") print(a,b,c) # ### range對(duì)象 """ range([開始值,]結(jié)束值[,步長]) 取頭舍尾,結(jié)束值本身獲取不到,獲取到它之前的那一個(gè)數(shù)據(jù) """ # range(一個(gè)值) for i in range(5): # 0 ~ 4 print(i) # range(二個(gè)值) for i in range(3,8): # 3 4 5 6 7 print(i) # range(三個(gè)值) 正向的從左到右 for i in range(1,11,3): # 1 4 7 10 print(i) # range(三個(gè)值) 逆向的從右到左 for i in range(10,0,-1): # 10 9 8 7 ... 1 print(i) # 總結(jié): """ while 一般用于處理復(fù)雜的邏輯關(guān)系 for 一般用于迭代數(shù)據(jù) 部分情況下兩個(gè)循環(huán)可以互相轉(zhuǎn)換; """ i = 1 while i <= 9: j = 1 while j <= i: print("%d*%d=%2d " % (i,j,i*j) ,end="" ) j+=1 print() i +=1 for i in range(1,10): for j in range(1,i+1): print("%d*%d=%2d " % (i,j,i*j) ,end="" ) print() # 打印 1 ~ 10 跳過5 i = 1 while i <= 10: if i == 5: i += 1 continue print(i) i +=1 for i in range(1,11): if i == 5: continue print(i)
小提示:
"".strip() 可以去掉字符串的兩邊的空白符,包括\n in 不能在純數(shù)字中使用,如果是字典的話判斷你的是字典的鍵 元組不能用while循環(huán)來顯示,因?yàn)閮?nèi)容是無序的 外層是集合,里面不能是列表 lst = [ ["a",1] , {"b","250"}] dic = dict(lst) print(dic) 這里可能會(huì)輸出{'a':1,'b':'250'}或者{'a':1,'250':'b'} lst = ["a1","b2"] dic = dict(lst) print(dic) 這里會(huì)輸出{a:1,b:2} lst = ["a11","b22"] dic = dict(lst) print(dic) 這里就會(huì)報(bào)錯(cuò) isinstance比type用的多 在一個(gè)文件中-5 - 正無窮 a = 3 b = 3 a和b的id是一樣 a = b =3 不管是不是-5到正無窮,a和b的id都是一樣的 height = int(intput("你身高多少:") ) 字符串為什么不能用int進(jìn)行強(qiáng)轉(zhuǎn)(字符串是小數(shù)的) help(print) # print的幫助文檔
4. 小練習(xí)
問題:
1.利用if語句寫出猜大小的游戲: 設(shè)定一個(gè)理想數(shù)字比如:66, 讓用戶三次機(jī)會(huì)猜數(shù)字,如果比66大,則顯示猜測(cè)的結(jié)果大了; 如果比66小,則顯示猜測(cè)的結(jié)果小了; 只有等于66,顯示猜測(cè)結(jié)果正確,退出循環(huán)。 最多三次都沒有猜測(cè)正確,退出循環(huán),并顯示‘都沒猜對(duì),繼續(xù)努力'。 2.使用while和for 遍歷字符串 "IG戰(zhàn)隊(duì)牛逼" 3.使用for循環(huán)對(duì)s="黃綠青藍(lán)紫"進(jìn)行循環(huán),每次打印的內(nèi)容是每個(gè)字符加上"色的", 例如:黃色的 綠色的 青色的 ... 4.完成要求: 用戶可持續(xù)輸入(while循環(huán)) 輸入A,則顯示走大路回家,然后在讓用戶進(jìn)一步選擇: 是選擇公交車,還是步行? 選擇公交車,顯示10分鐘到家,并退出整個(gè)程序。 選擇步行,顯示20分鐘到家,并退出整個(gè)程序。 輸入B, 則顯示走小路回家,并退出整個(gè)程序。 輸入C, 則顯示繞道回家,然后在讓用戶進(jìn)一步選擇: 是選擇游戲廳玩會(huì),還是網(wǎng)吧? 選擇游戲廳,則顯示 ‘一個(gè)半小時(shí)到家,爸爸在家,拿棍等你。'并讓其重新輸入A,B,C選項(xiàng)。 選擇網(wǎng)吧,則顯示‘兩個(gè)小時(shí)到家,媽媽已做好了戰(zhàn)斗準(zhǔn)備。'并讓其重新輸入A,B,C選項(xiàng)。 5.寫代碼:計(jì)算 1 - 2 + 3 - 4 + ... + 99 中除了88以外所有數(shù)的總和? 6.(升級(jí)題)打印菱形小星星 * *** ***** ******* ********* *********** *********** ********* ******* ***** *** *
答案:
""" 1.利用if語句寫出猜大小的游戲: 設(shè)定一個(gè)理想數(shù)字比如:66, 讓用戶三次機(jī)會(huì)猜數(shù)字,如果比66大,則顯示猜測(cè)的結(jié)果大了; 如果比66小,則顯示猜測(cè)的結(jié)果小了; 只有等于66,顯示猜測(cè)結(jié)果正確,退出循環(huán)。 最多三次都沒有猜測(cè)正確,退出循環(huán),并顯示‘都沒猜對(duì),繼續(xù)努力'。 """ """ times = 1 while times <= 3: num = input("請(qǐng)輸入一個(gè)數(shù)字:") if num.isdecimal(): num = int(num) if num > 66: print("結(jié)果大了") elif num == 66: print("對(duì)了 bingo老嬸") break elif num < 66: print("結(jié)果小了") else: print("抱歉,數(shù)字格式不對(duì)~") if times == 3: print("都沒猜對(duì),繼續(xù)努力") times +=1 """ # 2.使用while和for 遍歷字符串 "IG戰(zhàn)隊(duì)牛逼" strvar="IG戰(zhàn)隊(duì)牛逼" i = 0 while i < len(strvar): print(strvar[i]) i +=1 for i in strvar: print(i) # 3.使用for循環(huán)對(duì)s="黃綠青藍(lán)紫"進(jìn)行循環(huán),每次打印的內(nèi)容是每個(gè)字符加上"色的", # 例如:黃色的 綠色的 青色的 ... s="黃綠青藍(lán)紫" for i in s: print(i + "色的" ) # 4.完成要求: # 用戶可持續(xù)輸入(while循環(huán)) # 輸入A,則顯示走大路回家,然后在讓用戶進(jìn)一步選擇: # 是選擇公交車,還是步行? # 選擇公交車,顯示10分鐘到家,并退出整個(gè)程序。 # 選擇步行,顯示20分鐘到家,并退出整個(gè)程序。 # 輸入B, # 則顯示走小路回家,并退出整個(gè)程序。 # 輸入C, # 則顯示繞道回家,然后在讓用戶進(jìn)一步選擇: # 是選擇游戲廳玩會(huì),還是網(wǎng)吧? # 選擇游戲廳,則顯示 ‘一個(gè)半小時(shí)到家,爸爸在家,拿棍等你。'并讓其重新輸入A,B,C選項(xiàng)。 # 選擇網(wǎng)吧,則顯示‘兩個(gè)小時(shí)到家,媽媽已做好了戰(zhàn)斗準(zhǔn)備。'并讓其重新輸入A,B,C選項(xiàng)。 """ sign = True while sign: opt = input("請(qǐng)輸入選項(xiàng)A,B,C") if opt.lower() == "a": print("走大路回家") opt = input("是選擇公交車,還是步行?") if opt == "公交車": print("10分鐘到家,") sign = False # break elif opt == "步行": print("20分鐘到家") sign = False # break elif opt.lower() == "b": print("走小路回家") break elif opt.lower() == "c": print("繞道回家") opt = input("是選擇游戲廳玩會(huì),還是網(wǎng)吧?") if opt == "游戲廳": print("一個(gè)半小時(shí)到家,爸爸在家,拿棍等你。") elif opt == "網(wǎng)吧": print("兩個(gè)小時(shí)到家,媽媽已做好了戰(zhàn)斗準(zhǔn)備。") """ # 5.寫代碼:計(jì)算 1 - 2 + 3 - 4 + ... + 99 中除了88以外所有數(shù)的總和? total = 0 for i in range(1,100): if i == 88: continue if i % 2 == 1: total += i elif i%2 == 0: total -= i print(total) total = 0 i = 1 while i <= 99: if i == 88: i +=1 continue if i % 2 == 1: total += i elif i%2 == 0: total -= i i +=1 print(total) # 6.(升級(jí)題)打印菱形小星星 """ * *** ***** ******* ********* *********** *********** ********* ******* ***** *** * """ """ 空格 + 星星 + 換行 總行數(shù): 對(duì)于任意個(gè)星星n ,總行數(shù): n // 2 + 1 13 -> 7 11 -> 6 9 -> 5 7 -> 4 空格: 對(duì)于當(dāng)前行i , 空格數(shù)量 = 總行數(shù) - 當(dāng)前行 1 => 5 2 => 4 3 => 3 4 => 2 5 => 1 6 => 0 星星: 對(duì)于當(dāng)前行i , 星星數(shù)量 = 2 * 當(dāng)前行 - 1 1 => 1 2 => 3 3 => 5 4 => 7 """ # n = int(input("輸入星星個(gè)數(shù)")) n = 13 hang = n // 2 + 1 i = 1 while i <= hang: # 打印空格 kongge = hang - i print(" " * kongge,end="") # 打印星星 xingxing = 2 * i - 1 print("*" * xingxing,end="") # 打印換行 print() i += 1 i = hang while i >= 1: # 打印空格 kongge = hang - i print(" " * kongge,end="") # 打印星星 xingxing = 2 * i - 1 print("*" * xingxing,end="") # 打印換行 print() i -= 1 # 方法二 n = 11 hang = n // 2 + 1 i = 1 while i <= hang: # 打印空格 kongge = hang - i while kongge>0: print(" ",end="") kongge -= 1 # 打印星星 xingxing = 2 * i - 1 j = 1 while j <= xingxing: print("*" ,end="") j += 1 # 打印換行 print() i += 1 i = hang while i >= 1: # 打印空格 kongge = hang - i while kongge>0: print(" ",end="") kongge -= 1 # 打印星星 xingxing = 2 * i - 1 j = 1 while j <= xingxing: print("*" ,end="") j += 1 # 打印換行 print() i -= 1 # (擴(kuò)展了解) """abs 求絕對(duì)值的內(nèi)置函數(shù) abs(-1) = 1""" print("<===11111==>") for i in range(-6,7): # 只有一句代碼的話,可以直接寫在冒號(hào)的右邊; if i == 0:continue print(" " * (abs(i) - 1),"*" * (13-2*abs(i)))
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python采集圖片數(shù)據(jù)的實(shí)現(xiàn)示例
本文主要介紹了Python采集圖片數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Python高級(jí)特性之切片迭代列表生成式及生成器詳解
這篇文章主要為大家介紹了Python高級(jí)特性之切片迭代列表生成式及生成器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-10-10python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法
今天小編就為大家分享一篇python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python使用海龜繪圖實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了Python使用海龜繪圖實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程
今天小編就為大家分享一篇使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例
在本篇文章里小編給大家整理的是關(guān)于python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例,需要的朋友們參考學(xué)習(xí)下。2020-02-02關(guān)于python中plt.hist參數(shù)的使用詳解
今天小編就為大家分享一篇關(guān)于python中plt.hist參數(shù)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Django零基礎(chǔ)入門之路由path和re_path詳解
這篇文章主要介紹了Django零基礎(chǔ)入門之路由path和re_path,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09