Python全棧之單項循環

1. 多項_巢狀分支

多項分支 (多選一)

"""
if 條件表達式1:
	code1 
elif 條件表達式2:
	code2
elif 條件表達式3:
	code3
else:
	`code4
如果條件表達式1成立,執行對應的分支code1,反之判斷條件表達式2是否成立
如果條件表達式2成立,執行對應的分支code2,反之判斷條件表達式3是否成立
如果條件表達式3成立,執行對應的分支code3,如果不成立,直接走else分支,到此程序執行完畢
elif 可以是0個 或者 多個
else 可以是0個 或者 一個
"""
youqian = False
youfang = False
youche = False
if youqian == True:
	print("說明這個人很有實力")
elif youfang == True:
	print("能交給朋友麼")
elif youche == True:
	print("開瞭雅迪艾瑪調動車,我們碰一碰吧")	
else:
	print("你還是去做美團騎手吧")
print("<=======================>")
# ### 巢狀分支
"""單項分支,雙向分支,多項分支的互相嵌套組合"""
youqian = True
youfang = True
youche = True
youyanzhi = True
youtili = False
if youqian == True:
	if youfang == True:
		if youche == True:
			if youyanzhi == True:
				if youtili == True:
					print("我要嫁給你~")
				else:
					print("你去吃點大腰子再來~")
			else:	
				print("你去一下泰國+韓國,整整容")
else:
	print("你是個好人吶~")
	
print("<=======================>")
#出題 height
#女生找對象
	# 男生在1米~1.5米之間 小強 你在哪裡?
	# 男生在1.5~1.7米之間 沒有安全感~
	# 男生 1.7~ 1.8米之間 帥哥 留個電話
	# 男生 1.8~2米之間 帥哥 你建議多一個女朋友嗎
# python特有(註意:因為input接受的數都是字符串,又因為我們會輸入小數,所以這裡隻能用float)
"""
height = float(input("請輸入您的身高:"))
if 1 <= height < 1.5:
	print("小強 你在哪裡?")
elif 1.5 <= height < 1.7:
	print("沒有安全感~")
elif 1.7 <= height < 1.8:
	print("帥哥 留個電話")
elif 1.8 <= height < 2:
	print("你建議多一個女朋友嗎")
else:
	print("抱歉,沒有合適的選項")
"""
# 通用寫法
height = float(input("請輸入您的身高:"))
if 1 <= height and height < 1.5:
	print("小強 你在哪裡?")
elif 1.5 <= height and height < 1.7:
	print("沒有安全感~")
elif 1.7 <= height and height < 1.8:
	print("帥哥 留個電話")
elif 1.8 <= height and height < 2:
	print("你建議多一個女朋友嗎")
else:
	print("抱歉,沒有合適的選項")
"""
tab 向右縮進
shift + tab 向左縮進
"""

2. 循環結構

2.1 循環結構

"""特點:減少冗餘代碼,提升執行效率"""
"""
語法:
while 條件表達式:
	code1
(1) 初始化一個變量
(2) 寫上循環的條件
(3) 自增自減的值
"""
# ### 打印1 ~ 100
# (1) 初始化一個變量
i = 1
# (2) 寫上循環的條件
while i <= 100:
	# (4) 寫上循環的邏輯
	print(i)
	# (3) 自增自減的值
	i += 1 # i = i + 1
"""
代碼解析:
第一次循環
i = 1  i<=100 判斷為真,執行循環體 print(1)
i += 1 i => 2 
第二次循環
代碼回到17行,重新進行條件判定 
i = 2  i<=100 判斷為真,執行循環體 print(2)
i += 1 i => 3
第三次循環
代碼回到17行,重新進行條件判定 
i = 3  i<=100 判斷為真,執行循環體 print(3)
i += 1 i => 4
....
以此類推 
直到i = 101  i <= 100 判斷為假,不執行循環體,到此循環結束...
1 ~ 100
"""
# ### 1 ~ 100的累加和
# (1) 初始化一個變量
i = 1
total = 0
# (2) 寫上循環的條件
while i <= 100 :
	# (4) 寫上自定義的邏輯
	total += i
	# (3) 自增自減的值
	i += 1
print(total)
"""
代碼解析:
第一次循環
i = 1 i <= 100 判定為真True 執行循環體 total += i => total = total + i => 0 + 1
i += 1  => i = 2
第二次循環
i = 2 i <= 100 判定為真True 執行循環體 total += i => total = total + i => 0 + 1 + 2
i += 1  => i = 3
第三次循環
i = 3 i <= 100 判定為真True 執行循環體 total += i => total = total + i => 0 + 1 + 2 + 3 
i += 1  => i = 4
...
依次類推
當i = 101 101 <= 100 判定為假False 不執行循環體,到此,循環結束..
total += i => total + i => 0 + 1 + 2 + 3 + 4 + .... + 100 => 5050
"""

# 死循環
"""
while True:
	print(1)
"""

# ### 用死循環的方法實現 1 ~ 100累加和
i = 1
total = 0
sign = True
while sign:
	total += i
	i+=1
	# 判斷i是否加到瞭101 , 不參與循環
	if i == 101:
		# 終止循環
		sign = False
print(total) #1 ~ 100 = 5050

2.2 單項循環的練習

# (1)打印 一行十個小星星* help(print)
# help 查看某個方法的文檔
help(print)
"""
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
# print("*",end='')
"""
i = 0
while i<10:	
	# end='' 打印時,尾部默認不加換行
	print("*",end='')	
	i += 1
# 默認換行
# print()
# (2)通過打印一個變量的形式,展現一行十個小星星
print("<======>")
i = 0
strvar = ""
while i < 10:
	# 寫上循環的邏輯
	strvar += "*" # strvar = strvar + "*"
	i +=1
print(strvar)
"""
strvar += "*" => strvar = "*"
strvar += "*" => strvar = "*" + "*"  = "**"
strvar += "*" => strvar = "**" + "*" = "***"
...
strvar += "*" => strvar = "********" + "*" = "*********"
"""
# (3)一行十個換色的星星 ★☆★☆★☆★☆★☆
"""
# 方法一
i = 0
while i < 5:
	print("★☆",end="")
	i+=1
"""
# 方法二
i = 0
while i < 10:
	if i % 2 == 0 :
		print("★",end="")
	else:
		print("☆",end="")
	i+=1
print("<=============>")
# 方法三
i = 0
strvar = ""
while i < 10:
	if i % 2 == 0 :
		strvar += "★"
	else:
		strvar += "☆"
	i+=1
print(strvar)
"""
***公式: 任意數 和 n 進行取餘,餘數的范圍: 0 ~ (n-1)***
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0
3 % 2 = 1
被除數 % 2 => 0 或者 1
0 % 5 = 0 
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0 
6 % 5 = 1
7 % 5 = 2
被除數 % 5 => 0 或者 1,2,3,4
"""
# (4)用一個循環,打印十行十列小星星
"""
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
★★★★★★★★★★
"""
# 方法一
i = 0 
while i < 100:
	# 邏輯寫在這裡
	print("*" , end="")
	# 打印換行 (在9 19 29 .. 99 )
	if i % 10 == 9:
		print()
	i += 1 

"""
0123456789
**********
10111213141516171819
**********
20212223242526272829
**********
...
90919293949596979899
**********
9 19 29 39 49 59 69 79 89 99
9 % 10  = 9
19 % 10 = 9
29 % 10 = 9
...
99 % 10 = 9
"""

print("<======>")
# 方法二
i = 1
while i <= 100:
	# 邏輯寫在這裡
	print("*" , end="")
	# 打印換行 (在9 19 29 .. 99 )
	if i % 10 == 0:
		print()
	i += 1 
"""
12345678910
**********
11121314151617181920
**********
21222324252627282930
**********
...
919293949596979899100
**********
10 20 30 ... 100
"""
# (5) 一個循環實現十行十列,格列換色的小星星
"""
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
"""
i = 0 
while i < 100:
	# (1)打印星星
	if i % 2 == 0 :
		print("★",end="")
	else:
		print("☆",end="")
	# (2)打印換行 (在9 19 29 .. 99 )
	if i % 10 == 9:
		print()
	i += 1 
# (6)一個循環實現十行十列,隔行換色的小星星
"""
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
*** 公式:任意數和n進行地板除,會出現n個相同的數
0 // 10 = 0
1 // 10 = 0
2 // 10 = 0
..
9 // 10 = 0
0 ~ 9 // 10 => 0 (10個相同的0)
10 // 10 = 1
11 // 10 = 1
12 // 10 = 1
...
19 // 10 = 1
10 ~ 19 // 10 => 1 (10個相同的1)
.... 以此類推
20 ~ 29 // 10 => 2 (10個相同的2)
30 ~ 39 // 10 => 3 (10個相同的3)
40 ~ 49 // 10 => 4 (10個相同的4)
...
90 ~ 99 // 10 => 9 (10個相同的9)
0~ 100 會出現10個相同的0,1,2 , 3 ... 9 
0 // 3 0
1 // 3 0
2 // 3 0
3 // 3 1
4 // 3 1
5 // 3 1 
"""
""""""
# 方法一
i = 0 
while i < 100:
	# (1)打印星星
	if i // 10 % 2 == 0:
		print("★",end="")
	else:
		print("☆",end="")
	# (2)打印換行 (在9 19 29 .. 99 )
	if i % 10 == 9:
		print()
	i += 1 
# 方法二
print("<=================>")
i = 10
while i < 110:
	# 打印星星 
	num = int(str(i)[-2])
	if num % 2 == 0 :
		print("★",end="")
	else:
		print("☆",end="")
	# 打印換行
	if i % 10 == 9:
		print()
	i+=1
"""
10 ~ 100 101 102 103 110...
10 ~ 19 => 1
20 ~ 29 => 2
30 ~ 39 => 3
90 ~ 99 => 9
100 ~ 109 => 0
"""

3. 字符串的切片

字符串相關操作

# (1)字符串的拼接 +
str1 = "趙沈陽,"
str2 = "so strong"
res = str1 + str2
res = "趙沈陽," + "so strong"
print(res)
# res = res + ",旁邊的同學很喜歡他~"
res += ",旁邊的同學很喜歡他~"
print(res)
# (2)字符串的重復 *
strvar = "重要的事情說三遍~"
res = strvar * 3
print(res)
# (3)字符串跨行拼接 \
str1 = "kskfjskjfklsjfklasdjklfjaskldjfaskljfklasjdfklasjdklfjaskldfjaskldjflasjfsf" \
"1122334"
print(str1)
# (4)字符串的索引
#          0 1 2 3 4 5
strvar = "趙世超真帥呀"
#         -6-5-4-3-2-1
print(strvar[1])
# (5)字符串的切片: (截取)
"""
語法 => 字符串[::]  完整格式:[開始索引:結束索引:間隔值]
	(1)[開始索引:]  從開始索引截取到字符串的最後
	(2)[:結束索引]  從開頭截取到結束索引之前(結束索引-1)
	(3)[開始索引:結束索引]  從開始索引截取到結束索引之前(結束索引-1)
	(4)[開始索引:結束索引:間隔值]  從開始索引截取到結束索引之前按照指定的間隔截取字符
	(5)[:]或[::]  截取所有字符串
"""
strvar = "王文是這個宇宙當中,最完美,無暇,善良,漂亮,英俊,帥氣,瀟灑,風流倜儻的神秘男孩"
# (1)[開始索引:]  從開始索引截取到字符串的最後
res = strvar[3:]
print(res)
# (2)[:結束索引]  從開頭截取到結束索引之前(結束索引-1)
"""4這個最大值本身獲取不到,要獲取到4之前的那一個數據 : 取頭舍尾"""
res = strvar[:5]
print(res)
# (3)[開始索引:結束索引]  從開始索引截取到結束索引之前(結束索引-1)
res = strvar[10:16]
print(res)
# (4)[開始索引:結束索引:間隔值]  從開始索引截取到結束索引之前按照指定的間隔截取字符
# 從左向右截取
res = strvar[::3]
# 0 3 6 9 12 15 ... 
print(res)
# 從右向左截取
res = strvar[::-1]
# -1 -2 -3 -4 -5 -6 .... 
print(res)
res = strvar[-3:-10:-2]
# -3 -5 -7 -9   秘的倜風
print(res)
print("<====>")
"""從左到右截,間隔值為正值,反過來,間隔值是負值,才能保證截取到數據"""
"""
res = strvar[-3:-10:10] # 錯誤的邏輯
print(res)
res = strvar[1:10]
print(res)
"""

4. 小練習

問題:

1.猜大小的遊戲:
設定一個理想數字比如:66,讓用戶輸入數字,如果比66大,則顯示猜測的結果大瞭;如果比66小,則顯示猜測的結果小瞭;隻有等於66,顯示猜測結果正確。
2.輸出 1-100 內的所有奇數
3.輸出 1-100 內的所有偶數
4.用戶登陸(有三次輸錯機會)且每次輸錯誤時顯示剩餘錯誤次數(提示:使用字符串格式化)
5.寫代碼,有如下字符串利用切片實現每一個功能
strvar = "132a4b5c"
1)對字符串進行切片形成新的字符串 "132"
2)對字符串進行切片形成新的字符串 "a4b"
3)對字符串進行切片形成新的字符串 "1245"
4)對字符串進行切片形成新的字符串 "3ab"
5)對字符串進行切片形成新的字符串 "c"
6)對字符串進行切片形成新的字符串 "ba3"
6.國際棋盤效果

答案:

# 1.猜大小的遊戲:
# 設定一個理想數字比如:66,讓用戶輸入數字,如果比66大,則顯示猜測的結果大瞭;如果比66小,則顯示猜測的結果小瞭;隻有等於66,顯示猜測結果正確。
"""
num = 66
str_num = input("請輸入理想的數字")
num_new = int(str_num)
if num_new > num:
	print("猜測的結果大瞭")
elif num_new == num:
	print("顯示猜測結果正確")
elif num_new < 66:
	print("則顯示猜測的結果小瞭")
"""

# 2.輸出 1-100 內的所有奇數
"""
i = 1
while i <= 100:
	if i % 2 == 1:
		print(i)
	i +=1
"""
# 3.輸出 1-100 內的所有偶數
"""
i = 1
while i <= 100:
	if i % 2 == 0:
		print(i)
	i +=1
"""
# 4.用戶登陸(有三次輸錯機會)且每次輸錯誤時顯示剩餘錯誤次數(提示:使用字符串格式化)
"""
times = 1
while times <= 3:
	pwd = input("請輸入您的密碼:")
	if pwd == "111":
		print("恭喜你登錄成功~")
		break
	# 剩餘次數 = 總次數 - 已經使用的次數
	print("你剩餘的輸入次數是%d" % (3 - times))	
	times +=1
"""
"""
sign = True
times = 1
while sign:
	pwd = input("請輸入您的密碼:")
	if pwd == "111":
		print("恭喜你登錄成功~")
		sign = False
	else:
		# 剩餘次數 = 總次數 - 已經使用的次數
		print("你剩餘的輸入次數是%d" % (3 - times))
	# 如果次數已經是3次瞭,強制終止循環;
	if times == 3:
		print("你已經沒有機會瞭... ")
		sign = False	
	times +=1
"""
# 5.寫代碼,有如下字符串利用切片實現每一個功能
strvar = "132a4b5c"
# 1)對字符串進行切片形成新的字符串 "132"
print(strvar[0:3])
# 2)對字符串進行切片形成新的字符串 "a4b"
print(strvar[3:6])
# 3)對字符串進行切片形成新的字符串 "1245"
print(strvar[::2])
# 4)對字符串進行切片形成新的字符串 "3ab"
print(strvar[1:6:2])
# 5)對字符串進行切片形成新的字符串 "c"
print(strvar[-1:])
# 6)對字符串進行切片形成新的字符串 "ba3"
print(strvar[-3::-2]) # -3 -5 -7 
# 6.國際棋盤效果
# 方法一
j = 0
while j < 8:	
	# □■□■□■□■
	if j % 2 == 0:
		print("□■□■□■□■",end="")			
	# ■□■□■□■□
	else:
		print("■□■□■□■□",end="")
	print()
	j +=1
"""
# □■□■□■□■
i = 0		
while i < 8:
	if i % 2 == 0:
		print("□",end="")
	else:
		print("■",end="")
	i +=1 
# ■□■□■□■□
i = 0		
while i < 8:
	if i % 2 == 0:
		print("■",end="")				
	else:
		print("□",end="")
	i +=1 
"""
print("<=====>")
j = 0
while j < 8:	
	# □■□■□■□■
	if j % 2 == 0:
		i = 0		
		while i < 8:
			if i % 2 == 0:
				print("□",end="")
			else:
				print("■",end="")
			i +=1 		
	# ■□■□■□■□
	else:
		i = 0		
		while i < 8:
			if i % 2 == 0:
				print("■",end="")				
			else:
				print("□",end="")
			i +=1 
	print()
	j +=1

# 方法二
"""
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
"""
print("<=====>")
i = 0
while i < 64:
	# 判斷當前是奇數行還是偶數行
	if i // 8 % 2 == 0:
		# □■□■□■□■
		if i % 2 == 0:
			print("□",end="")
		else:
			print("■",end="")
	else:
		# ■□■□■□■□
		if i % 2 == 0:
			print("■",end="")			
		else:
			print("□",end="")
	# 第八個方塊換行
	if i % 8 == 7:
		print()		
	i +=1
print("<=====>")
# 方法三
i = 0
while i < 4:
	strvar = ""
	j = 0
	# 打印黑白相間的小方塊
	while j < 8:
		if j % 2 == 0:
			strvar += "□"
		else:
			strvar += "■"
		j +=1
	# 正向打印
	print(strvar)
	# 逆向打印
	print(strvar[::-1])
	i +=1

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: