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的更多內容!