這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
python_study [2024/04/15 10:17] don |
python_study [2024/04/15 10:53] (目前版本) don |
||
---|---|---|---|
行 3: | 行 3: | ||
+ | |||
+ | ==== 直接執行時與被引用的判斷機制 ==== | ||
+ | |||
+ | 你就可以看到 __name__ 的值在檔案被直接執行時與被引用時是不同的。 | ||
+ | 所以回到上面的問題:要怎麼讓檔案在被引用時,不該執行的程式碼不被執行? | ||
+ | 當然就是靠 < | ||
+ | < | ||
+ | # cool.py | ||
+ | |||
+ | defcool_func(): | ||
+ | print(' | ||
+ | |||
+ | if__name__==' | ||
+ | print(' | ||
+ | cool_func() | ||
+ | </ | ||
* 註解符號為 # | * 註解符號為 # | ||
行 37: | 行 53: | ||
print(rand_num()) | print(rand_num()) | ||
print(sqrt_num(9)) | print(sqrt_num(9)) | ||
+ | |||
</ | </ | ||
- | 程式的最小執行單位為敘句(statement), | + | < |
- | 運算式述句~ 算數運算子: | + | 程式的最小執行單位為敘句(statement), |
- | 比較運算子: | + | 運算式述句~ 算數運算子: |
- | 布林邏輯運算子: | + | 比較運算子: |
- | 指派述句~ 使用" | + | 布林邏輯運算子: |
- | 輸出: | + | 指派述句~ 使用" |
- | 輸入: input()\\ | + | 輸出: |
- | 條件判斷述句~ if , if....else, if...elif....elif...elif...else, | + | 輸入: input() |
- | 迴圈述句~ for ....in...., while, 使用break , continue 控制迴圈\\ | + | 條件判斷述句~ if , if....else, if...elif....elif...elif...else, |
- | 述句中的物件~整數(integer), | + | 迴圈述句~ for ....in...., while, 使用break , continue 控制迴圈 |
+ | 述句中的物件~整數(integer), | ||
+ | </ | ||
程式的三種控制結構\\ | 程式的三種控制結構\\ | ||
行 58: | 行 77: | ||
迴圈結構是程式根據條件判斷結果向後執行的一種執行方式。\\ | 迴圈結構是程式根據條件判斷結果向後執行的一種執行方式。\\ | ||
- | 程式的分支結構\\ | + | 程式的分支結構 |
==== 單分支結構 if ==== | ==== 單分支結構 if ==== | ||
< | < | ||
python中分支結構使用if保留字對條件進行判斷,使用方法: | python中分支結構使用if保留字對條件進行判斷,使用方法: | ||
- | + | ||
if < | if < | ||
< | < | ||
+ | | ||
其中,if、: | 其中,if、: | ||
例如:判斷一個數字的大小 | 例如:判斷一個數字的大小 | ||
行 88: | 行 106: | ||
==== 二分支結構:if-else ==== | ==== 二分支結構:if-else ==== | ||
+ | |||
< | < | ||
- | """ | ||
python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下: | python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下: | ||
- | if < | + | if < |
< | < | ||
else: | else: | ||
< | < | ||
+ | | ||
< | < | ||
例如: | 例如: | ||
行 110: | 行 129: | ||
這個數字既不能被3整除,也不可以被5整除 | 這個數字既不能被3整除,也不可以被5整除 | ||
輸入的數字是: 11 | 輸入的數字是: 11 | ||
- | """ | ||
</ | </ | ||
+ | |||
==== 三分支結構:if-elif-else ==== | ==== 三分支結構:if-elif-else ==== | ||
+ | |||
< | < | ||
- | """ | ||
python的三分支結構使用if-elif-else保留字對條件進行判斷,語法格式如下: | python的三分支結構使用if-elif-else保留字對條件進行判斷,語法格式如下: | ||
行 148: | 行 167: | ||
請輸入你的成績:50 | 請輸入你的成績:50 | ||
不及格 | 不及格 | ||
- | """ | ||
</ | </ | ||
+ | |||
==== 遍歷迴圈: | ==== 遍歷迴圈: | ||
python語言中的迴圈結構分為:遍歷迴圈和無限迴圈兩種,遍歷迴圈使用保留字for依次提取遍歷結構各元素進行處理,無限迴圈使用保留字while根據判斷條件執行程式。 | python語言中的迴圈結構分為:遍歷迴圈和無限迴圈兩種,遍歷迴圈使用保留字for依次提取遍歷結構各元素進行處理,無限迴圈使用保留字while根據判斷條件執行程式。 | ||
在學習for迴圈時我們要理解,什麼是for迴圈,迴圈就是重複做某件事,for迴圈時python提供第二種迴圈機制,為何要有for迴圈,理論上for迴圈能做的事,while迴圈都可以做,之所以要有for迴圈,是因為for迴圈在迴圈取值(遍歷取值)比while迴圈更簡潔。 | 在學習for迴圈時我們要理解,什麼是for迴圈,迴圈就是重複做某件事,for迴圈時python提供第二種迴圈機制,為何要有for迴圈,理論上for迴圈能做的事,while迴圈都可以做,之所以要有for迴圈,是因為for迴圈在迴圈取值(遍歷取值)比while迴圈更簡潔。 | ||
- | """ | + | |
for 變數名 in 可迭代物件: | for 變數名 in 可迭代物件: | ||
可迭代物件可以是:列表、字典、字串、元組、集合 | 可迭代物件可以是:列表、字典、字串、元組、集合 | ||
遍歷迴圈:for | 遍歷迴圈:for | ||
遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。 | 遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。 | ||
+ | |||
+ | < | ||
for < | for < | ||
< | < | ||
+ | </ | ||
例如: | 例如: | ||
+ | |||
< | < | ||
for a in " | for a in " | ||
行 179: | 行 202: | ||
1 | 1 | ||
2 | 2 | ||
- | """ | + | |
- | 遍歷結構還有一種擴充套件結構 | + | '遍歷結構還有一種擴充套件結構 |
- | """ | + | |
for <> in <>: | for <> in <>: | ||
< | < | ||
else: | else: | ||
< | < | ||
- | """ | + | |
</ | </ | ||
+ | |||
當for迴圈正常執行之後,程式會繼續執行else語句中內容,else語句只在迴圈正常執行之後才執行並結束,所以,\\ | 當for迴圈正常執行之後,程式會繼續執行else語句中內容,else語句只在迴圈正常執行之後才執行並結束,所以,\\ | ||
可以在< | 可以在< | ||
行 216: | 行 240: | ||
Process finished with exit code 0 | Process finished with exit code 0 | ||
無限迴圈:while | 無限迴圈:while | ||
- | """ | + | |
python通過保留字while實現無限迴圈,基本使用方法如下: | python通過保留字while實現無限迴圈,基本使用方法如下: | ||
while < | while < | ||
行 234: | 行 258: | ||
當程式執行到while語句時,判斷條件如果為True,執行迴圈體語句,語句結束後返回再次判斷while語句的條件,當條件為False時,迴圈終止,執行與while同級別縮排的後續語句。 | 當程式執行到while語句時,判斷條件如果為True,執行迴圈體語句,語句結束後返回再次判斷while語句的條件,當條件為False時,迴圈終止,執行與while同級別縮排的後續語句。 | ||
無限迴圈也有一種使用保留字else的擴充套件模式: | 無限迴圈也有一種使用保留字else的擴充套件模式: | ||
+ | < | ||
while < | while < | ||
< | < | ||
else: | else: | ||
< | < | ||
- | """ | + | </ |
迴圈控制有兩個輔助迴圈控制的保留字:break和continue | 迴圈控制有兩個輔助迴圈控制的保留字:break和continue | ||
break用來跳出最內層for或while迴圈,脫離該迴圈後程式繼續執行迴圈後續程式碼。 | break用來跳出最內層for或while迴圈,脫離該迴圈後程式繼續執行迴圈後續程式碼。 | ||
行 267: | 行 292: | ||
| | ||
結果:pthon | 結果:pthon | ||
- | """ | + | |
總結:continue語句和break語句的區別是:continue語句只結束本次迴圈,不終止下面程式的執行,而break語句直接結束整個當前迴圈。 | 總結:continue語句和break語句的區別是:continue語句只結束本次迴圈,不終止下面程式的執行,而break語句直接結束整個當前迴圈。 | ||
強調:在continue之後新增同級程式碼毫無意義,因為永遠無法執行 | 強調:在continue之後新增同級程式碼毫無意義,因為永遠無法執行 | ||
- | """ | + | |
while死迴圈與效率問題: | while死迴圈與效率問題: | ||
- | """ | + | |
count = 0 | count = 0 | ||
while count < 5: | while count < 5: | ||
行 285: | 行 310: | ||
1 + 1 | 1 + 1 | ||
一直不停的工作,純計算無io的死迴圈會導致致命的效率問題,瞭解即可,不要實驗(費電腦) | 一直不停的工作,純計算無io的死迴圈會導致致命的效率問題,瞭解即可,不要實驗(費電腦) | ||
- | """ | + | |
while迴圈巢狀,每一層都必須配一個break | while迴圈巢狀,每一層都必須配一個break | ||
例如: | 例如: | ||
- | """ | + | |
while True: | while True: | ||
while True: | while True: | ||
行 295: | 行 320: | ||
break | break | ||
break | break | ||
- | """ | + | </ |
- | while迴圈和if結構連用: | + | ==== while迴圈和if結構連用: |
+ | |||
+ | < | ||
使用者登入:當名字輸入錯誤或密碼輸入錯誤時,重新輸入,當名字以及密碼輸入成功時,登入成功那個 | 使用者登入:當名字輸入錯誤或密碼輸入錯誤時,重新輸入,當名字以及密碼輸入成功時,登入成功那個 | ||
name = " | name = " | ||
行 335: | 行 362: | ||
縮排、縮排、縮排 | 縮排、縮排、縮排 | ||
Python 程式語言的一個最大的特色就是以縮排定義程式結構。不像 C, C++, Java 等語言用括號定義程式區塊 (類別、函式、條件判斷和迴圈等),在 Python 裡,行首的「空白字元個數」 (即縮排) 就定義了區塊結構。許多會寫像 | Python 程式語言的一個最大的特色就是以縮排定義程式結構。不像 C, C++, Java 等語言用括號定義程式區塊 (類別、函式、條件判斷和迴圈等),在 Python 裡,行首的「空白字元個數」 (即縮排) 就定義了區塊結構。許多會寫像 | ||
- | int main(){ | + | < |
- | int i; | + | int main() |
+ | { | ||
+ | int i; | ||
double d; | double d; | ||
- | | + | |
- | i = 2; | + | i = 2; |
} | } | ||
+ | </ | ||
這種程式的人一開始會非常不習慣這種作法;但所有程式設計的書都會告訴你程式碼應該要排整齊,亂排只會增加往後維護的困難度而已。Python 強迫程式員把程式寫得漂亮,這不單簡化了往後的維護工作,更去掉了程式裡那些擾人的括號,對減少程式碼長度來說效果良好。 | 這種程式的人一開始會非常不習慣這種作法;但所有程式設計的書都會告訴你程式碼應該要排整齊,亂排只會增加往後維護的困難度而已。Python 強迫程式員把程式寫得漂亮,這不單簡化了往後的維護工作,更去掉了程式裡那些擾人的括號,對減少程式碼長度來說效果良好。 | ||
註記 | 註記 | ||
適當地縮短程式碼的行數絕對是好事。一個函式能在一頁裡列完,就能比兩三頁長的函式更易讀易懂,也更不容易寫錯。 | 適當地縮短程式碼的行數絕對是好事。一個函式能在一頁裡列完,就能比兩三頁長的函式更易讀易懂,也更不容易寫錯。 | ||
+ | < | ||
在 Python 裡, | 在 Python 裡, | ||
print " | print " | ||
行 358: | 行 389: | ||
print "1 == 1, of course" | print "1 == 1, of course" | ||
這樣才對。 | 這樣才對。 | ||
+ | </ | ||
至於一次縮排要縮多少個字元,Python 並沒有進行限制,甚至不同的段落空白不一樣長也可以;\\ | 至於一次縮排要縮多少個字元,Python 並沒有進行限制,甚至不同的段落空白不一樣長也可以;\\ | ||
只要同一個區塊的行首空白數相同即可。然而經驗告訴我們,\\ | 只要同一個區塊的行首空白數相同即可。然而經驗告訴我們,\\ |