三大結構:
-順序-
-分支-
-循環-
-分支-:
1.分支的基本語法
1.if 條件表達式:
2.語句1
3.語句2 等等....
2.條件表達式就是計算結果必須為布爾值的表達式
3.不同於java,python分支表達式使用了冒號來代替大括號
4.注意表達式后面出現的語句,如果屬於同一級別,則必須同一距離縮進
5.條件表達式結果為True執行下面同一級別的語句塊
6.關於條件表達式的運算符是比較運算符(如不知道請去找字符串+變量的文章)
7.if語句可以嵌套使用,但不推薦
8.python沒有switch-case語句,乖乖用if吧
if語句例子
條件:如果age小於18歲,則打印“你還未成年,請去請示你家長”
age = 17 if age < 18: print("你還未成年,請去請示你家長")
結果如下:
你還未成年,請去請示你家長
關於if語句級別問題
age = 18 #我們可以在這里測試一下 if age < 18: print("你還未成年,請去請示你家長") #下面的句子與if為同一級別,所以不進入if的判斷機制 print("這個句子不進入if判斷語句中")
結果如下:
這個句子不進入if判斷語句中
-雙向分支-:
if..else..語句
語法:
if 條件表達式:
語句1
語句2
else:
語句1
語句2
雙向分支由兩個分支,當程序執行到if...else語句的時候,一定會執行其中一個,也僅僅執行一個(如果你的雙向分支語句兩個分支都沒執行,那一定是你程序問題)
縮進問題,else和if是同一級別,其余的語句也同一個級別
雙向分支例子
age = 18 if age < 18: print("你還未成年,請去請示你家長") else: print("你已經成年,需要擔負成年的責任了")
結果如下:
你已經成年,需要擔負成年的責任了
-多路分支-:
當雙向分支已經不足以去判斷很多分支的情況下,請使用多路分支
多路分支語法
if..else..語句
if 條件表達式:
語句1
語句2
elif 條件表達式:
語句1
語句2
...
else:
語句1
語句2
使用雙向分支去完成多路分支的工作顯得代碼很繁雜,沒有聯動性
案例如下:
input():在控制台商輸出括號內的字符串,接收用戶在控制台上輸入的內容並返回(返回的值一定是字符串類型)
案例條件:
90以上: 輸出優秀
80-90:良
70-80:中
60-70:平
60以下: 輸出:請補考
score = input("請輸入你的成績:") score = int(score)# 將字符串轉化為整數 if score >= 90: print("優秀") if score < 90 and score >= 80: print("良") if score < 80 and score >= 70: print("中") if score < 70 and score >= 60: print("平") if score< 60: print("請補考")
結果如下:
請輸入你的成績:88
良
還是剛剛的例子,這次用多路分支來實現
score = input("請再次輸入你的成績:") score = int(score) if score >= 90: #是不是感覺清晰很多 print("優秀") elif score >= 80: print("良") elif score >= 70: print("中") elif score >= 60: print("平") else : print("請補考")
結果如下:
請再次輸入你的成績:88
良
-循環語句-:
重復執行某些固定動作或者處理基本固定的事物
分類
for循環
for循環語法: (不同於java C,python的for語法跟foreache相似)
for 變量 in 序列:
語句1
語句2
....
while 循環
表示當某條件成立的時候,就循環
不知道具體循環次數,但能確定循環的成立條件的時候用while循環
while語法:
while 條件表達式:
語句1
序列=一列數字或者其他值,一般用中括號"[]"表示
例如 ['haha','hihi','wawa']
for循環案例:
案例條件:打印學生列表姓名
for name in ['zhangsan','lisi','wangwu']: print(name)
結果如下:
zhangsan
lisi
wangwu
for循環嵌套if語句使用
for name in ['zhangsan','lisi','wangwu']: if name == "wangwu": print("{0}同學犯錯了,請罰站".format(name)) else : print("{0}同學做的不錯,獎勵".format(name))
結果如下:
zhangsan同學做的不錯,獎勵
lisi同學做的不錯,獎勵
wangwu同學犯錯了,請罰站
-range-:
生成一個數字序列
具體范圍可以設定
在python,如果有表示數字范圍的兩個數,一般左邊的數字為首,右邊的數字為尾但是不包含
range函數在python2和python3里面右嚴重的區別(這里以python3為例子)
range案例
案例條件:打印1到10的數字
for i in range(1,11): print(i)
結果如下:
1 2 3 4 5 6 7 8 9 10
in 后面的變量要求是可以可迭代的內容
for i in range(1,10): print(i) print(type(range(1,10)))
結果如下:
1 2 3 4 5 6 7 8 9 <class 'range'>
-for-else語句-:
當for循環結束的時候,就會執行else語句(跟if有區別,前者是當for執行完才執行,后者是只執行一個)
我個人喜歡數字3 ,所以當循環到數字3時候就打印出來,其他則打印"我不喜歡這個數字",在整個循環結束之后打印“我熱愛數字”這句話
for i in range(1,11): if i == 3: print("我喜歡數字{0}".format(i)) else: #這里請看仔細,兩個else的階級是不一致的,一個是if的else,一個是for的else print("我不喜歡這個數字") else: print("我熱愛數字")
結果如下:
我不喜歡這個數字
我不喜歡這個數字
我喜歡數字3
我不喜歡這個數字
我不喜歡這個數字
我不喜歡這個數字
我不喜歡這個數字
我不喜歡這個數字
我不喜歡這個數字
我不喜歡這個數字
我熱愛數字
關於循環的關鍵字:break ,contineu ,pass
break :無條件結束整個循環,簡稱循環猝死
continei: 無條件結束本次循環,重新進入下一輪循環
pass:表示略過,通常用於占位
for 循環中的變量表示,一般用i,k,m,n之類的(約定俗成)
如果循環變量不重要,可以用下划線(_)表示
-break-:
案例條件:在數字1到10里面尋找3,找到之后打印並且馬上結束循環,可以避免過多的進程
for _ in range(1,11): if _ == 3: print("我找到了{0}".format(_)) break else: print(_) #打印到2
結果如下:
1
2
我找到了3
-contineu-:
案例條件在數字1到10里面尋找所有偶數,並且打印出來
a = 1 for i in range(1,11): if i%2 == 1: continue; #直接本次循環結束,也不進行a的運算 a += 1; else: print("{0}是偶數".format(i)) print("a的值為{0}".format(a)) #如果a的值大於1,則代表沒有結束循環
結果如下:
2是偶數
a的值為1
4是偶數
a的值為1
6是偶數
a的值為1
8是偶數
a的值為1
10是偶數
a的值為1
有時候,能運用一些細節來縮寫代碼達到同樣的效果
for i in range(1,11): if i%2 == 0: #直接判斷是否為偶數,而不是進行篩選 print("{0}是偶數".format(i))
結果如下:
2是偶數
4是偶數
6是偶數
8是偶數
10是偶數
-pass-:
運用pass關鍵字進行占位,占據一個空格的位置
很多時候我們創建一些函數或者循環等等是覺得在后面會有用,但是目前來說不確定里面怎么運算,空着呢又會出錯,這時就需要pass來進行占位
for i in range(1,2): pass # 不會報錯
結果如下:
-while-:
案例條件:年利率是6.7%,本利是每年翻滾,則多少年后本錢會翻倍
當前知道年利率(循環條件),不知道多少年(循環次數)
year = 0 qian = 100000 while qian < 200000: #利用知道本錢這個循環條件來建立循環 year += 1 qian = qian*(1+0.067) print("第{0}年,我現在有{1}".format(year,qian))
結果如下:
第1年,我現在有106700.0 第2年,我現在有113848.9 第3年,我現在有121476.77629999998 第4年,我現在有129615.72031209998 第5年,我現在有138299.97357301068 第6年,我現在有147566.07180240238 第7年,我現在有157452.99861316333 第8年,我現在有168002.34952024528 第9年,我現在有179258.5069381017 第10年,我現在有191268.8269029545 第11年,我現在有204083.83830545243
while...else,和for...else...用法一樣
條件跟前面一致,當本錢翻倍時候,就用print慶祝一下
year = 0 qian = 100000 while qian < 200000: qian = qian * (1+0.067) year += 1 print("第{0}年,我現在有{1}".format(year,qian)) else: #當前else和while處於同一級 print("終於翻倍了,不容易啊")
結果如下:
第1年,我現在有106700.0 第2年,我現在有113848.9 第3年,我現在有121476.77629999998 第4年,我現在有129615.72031209998 第5年,我現在有138299.97357301068 第6年,我現在有147566.07180240238 第7年,我現在有157452.99861316333 第8年,我現在有168002.34952024528 第9年,我現在有179258.5069381017 第10年,我現在有191268.8269029545 第11年,我現在有204083.83830545243 終於翻倍了,不容易啊
順序結構
在不包含分支結構(條件判斷),循環結構(for ,while)情況下一步一步往下執行
文筆不好,僅供參考
要有錯誤或者有其他更多的見解,歡迎大家加我QQ384435742來交流
想第一時間看更新的文章,請關注,謝謝