使用者工具

網站工具


python_study

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
python_study [2024/04/15 10:17]
don
python_study [2024/04/15 10:53] (目前版本)
don
行 3: 行 3:
  
  
 +
 +==== 直接執行時與被引用的判斷機制 ====
 +
 +你就可以看到 __name__ 的值在檔案被直接執行時與被引用時是不同的。
 +所以回到上面的問題:要怎麼讓檔案在被引用時,不該執行的程式碼不被執行?
 +當然就是靠 <code>__name__ == '__main__' </code>做判斷!
 +<code>
 +# cool.py
 +
 +defcool_func():
 +    print('cool_func(): Super Cool!')
 +
 +if__name__=='__main__':
 +    print('Call it locally')
 +    cool_func()
 +</code>
  
 * 註解符號為 # * 註解符號為 #
行 37: 行 53:
 print(rand_num()) print(rand_num())
 print(sqrt_num(9)) print(sqrt_num(9))
 +
 </code> </code>
  
-程式的最小執行單位為敘句(statement),同等於文章的句子\\ +<code> 
-運算式述句~ 算數運算子:+, -, *, /, %, //, **\\ +程式的最小執行單位為敘句(statement),同等於文章的句子 
-比較運算子: >, <, ==, !=, >=,<=\\ +運算式述句~ 算數運算子:+, -, *, /, %, //, **  
-布林邏輯運算子: and, or, not\\ +比較運算子: >, <, ==, !=, >=,<
-指派述句~ 使用" = "作變數指派\\ +布林邏輯運算子: and, or, not 
-輸出:print()\\ +指派述句~ 使用" = "作變數指派 
-輸入: input()\\ +輸出:print() 
-條件判斷述句~ if , if....else, if...elif....elif...elif...else, while\\ +輸入: input() 
-迴圈述句~ for ....in...., while, 使用break , continue 控制迴圈\\ +條件判斷述句~ if , if....else, if...elif....elif...elif...else, while 
-述句中的物件~整數(integer), 浮點(float), 字串(string),元組(tuple),清單(list),字典(dictionary)\\+迴圈述句~ for ....in...., while, 使用break , continue 控制迴圈 
 +述句中的物件~整數(integer), 浮點(float), 字串(string),元組(tuple),清單(list),字典(dictionary) 
 +</code>
  
 程式的三種控制結構\\ 程式的三種控制結構\\
行 58: 行 77:
 迴圈結構是程式根據條件判斷結果向後執行的一種執行方式。\\ 迴圈結構是程式根據條件判斷結果向後執行的一種執行方式。\\
  
-程式的分支結構\\ +程式的分支結構
 ==== 單分支結構 if ==== ==== 單分支結構 if ====
  
 <code> <code>
 python中分支結構使用if保留字對條件進行判斷,使用方法: python中分支結構使用if保留字對條件進行判斷,使用方法:
- +
  if <條件>:  if <條件>:
     <語句塊>     <語句塊>
 +    
 其中,if、:、<語句塊>、前的縮排都是語法的一部分 其中,if、:、<語句塊>、前的縮排都是語法的一部分
 例如:判斷一個數字的大小 例如:判斷一個數字的大小
行 88: 行 106:
  
 ==== 二分支結構:if-else ==== ==== 二分支結構:if-else ====
 +
 <code> <code>
-""" 
 python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下: python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下:
    
- if <條件>:+if <條件>:
     <語句塊1>     <語句塊1>
 else: else:
     <語句塊2>     <語句塊2>
 +    
 <語句塊1>在if<條件>中滿足即為True時執行,<語句塊2>在if<條件>中不滿足即為False時執行,簡單來說,二分支結構根據條件True或False結果產生兩條路徑。 <語句塊1>在if<條件>中滿足即為True時執行,<語句塊2>在if<條件>中不滿足即為False時執行,簡單來說,二分支結構根據條件True或False結果產生兩條路徑。
 例如: 例如:
行 110: 行 129:
 這個數字既不能被3整除,也不可以被5整除 這個數字既不能被3整除,也不可以被5整除
 輸入的數字是: 11 輸入的數字是: 11
-""" 
 </code> </code>
 +
 ==== 三分支結構:if-elif-else ==== ==== 三分支結構:if-elif-else ====
 +
 <code> <code>
-""" 
 python的三分支結構使用if-elif-else保留字對條件進行判斷,語法格式如下: python的三分支結構使用if-elif-else保留字對條件進行判斷,語法格式如下:
    
行 148: 行 167:
 請輸入你的成績:50 請輸入你的成績:50
 不及格 不及格
-""" 
 </code> </code>
 +
 ==== 遍歷迴圈:for ==== ==== 遍歷迴圈:for ====
  
 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
 遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。 遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。
 +
 +<code>
 for <迴圈變數> in <遍歷結構>: for <迴圈變數> in <遍歷結構>:
  <語句塊>  <語句塊>
 +</code>
 例如: 例如:
 +
 <code> <code>
 for a in "python": for a in "python":
行 179: 行 202:
 1 1
 2 2
-""" + 
-遍歷結構還有一種擴充套件結構 +'遍歷結構還有一種擴充套件結構 
-"""+
 for <> in <>: for <> in <>:
  <語句塊1>  <語句塊1>
 else: else:
  <語句塊2>  <語句塊2>
-"""+
 </code> </code>
 +
 當for迴圈正常執行之後,程式會繼續執行else語句中內容,else語句只在迴圈正常執行之後才執行並結束,所以,\\ 當for迴圈正常執行之後,程式會繼續執行else語句中內容,else語句只在迴圈正常執行之後才執行並結束,所以,\\
 可以在<語句塊2>中放置評價迴圈執行情況的語句\\ 可以在<語句塊2>中放置評價迴圈執行情況的語句\\
行 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的擴充套件模式:
 +<code>
 while <條件>: while <條件>:
  <語句塊1>  <語句塊1>
 else: else:
  <語句塊2>  <語句塊2>
-"""+</code>
 迴圈控制有兩個輔助迴圈控制的保留字: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
-""" +</code> 
-while迴圈和if結構連用:+==== while迴圈和if結構連用: ==== 
 + 
 +<code>
 使用者登入:當名字輸入錯誤或密碼輸入錯誤時,重新輸入,當名字以及密碼輸入成功時,登入成功那個 使用者登入:當名字輸入錯誤或密碼輸入錯誤時,重新輸入,當名字以及密碼輸入成功時,登入成功那個
 name = "佩奇" name = "佩奇"
行 335: 行 362:
 縮排、縮排、縮排 縮排、縮排、縮排
 Python 程式語言的一個最大的特色就是以縮排定義程式結構。不像 C, C++, Java 等語言用括號定義程式區塊 (類別、函式、條件判斷和迴圈等),在 Python 裡,行首的「空白字元個數」 (即縮排) 就定義了區塊結構。許多會寫像 Python 程式語言的一個最大的特色就是以縮排定義程式結構。不像 C, C++, Java 等語言用括號定義程式區塊 (類別、函式、條件判斷和迴圈等),在 Python 裡,行首的「空白字元個數」 (即縮排) 就定義了區塊結構。許多會寫像
-int main(){ +<code> 
-    int i;+int main() 
 +
 +  int i;
   double d;   double d;
-      d = 1.d0; +  d = 1.d0; 
-        i = 2;+  i = 2;
 } }
 +</code>
 這種程式的人一開始會非常不習慣這種作法;但所有程式設計的書都會告訴你程式碼應該要排整齊,亂排只會增加往後維護的困難度而已。Python 強迫程式員把程式寫得漂亮,這不單簡化了往後的維護工作,更去掉了程式裡那些擾人的括號,對減少程式碼長度來說效果良好。 這種程式的人一開始會非常不習慣這種作法;但所有程式設計的書都會告訴你程式碼應該要排整齊,亂排只會增加往後維護的困難度而已。Python 強迫程式員把程式寫得漂亮,這不單簡化了往後的維護工作,更去掉了程式裡那些擾人的括號,對減少程式碼長度來說效果良好。
  
 註記 註記
 適當地縮短程式碼的行數絕對是好事。一個函式能在一頁裡列完,就能比兩三頁長的函式更易讀易懂,也更不容易寫錯。 適當地縮短程式碼的行數絕對是好事。一個函式能在一頁裡列完,就能比兩三頁長的函式更易讀易懂,也更不容易寫錯。
 +<code>
 在 Python 裡, 在 Python 裡,
 print "Hi" print "Hi"
行 358: 行 389:
     print "1 == 1, of course"     print "1 == 1, of course"
 這樣才對。 這樣才對。
 +</code>
 至於一次縮排要縮多少個字元,Python 並沒有進行限制,甚至不同的段落空白不一樣長也可以;\\ 至於一次縮排要縮多少個字元,Python 並沒有進行限制,甚至不同的段落空白不一樣長也可以;\\
 只要同一個區塊的行首空白數相同即可。然而經驗告訴我們,\\ 只要同一個區塊的行首空白數相同即可。然而經驗告訴我們,\\
python_study.1713147445.txt.gz · 上一次變更: 2024/04/15 10:17 由 don