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-04
Python高級(jí)特性之切片迭代列表生成式及生成器詳解
這篇文章主要為大家介紹了Python高級(jí)特性之切片迭代列表生成式及生成器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-10-10
python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法
今天小編就為大家分享一篇python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python使用海龜繪圖實(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-11
python統(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-11
Django零基礎(chǔ)入門之路由path和re_path詳解
這篇文章主要介紹了Django零基礎(chǔ)入門之路由path和re_path,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09

