# Python筆記_週一67 謝忻芮 ## 1.輸出語句 * 在螢幕輸出文字的指令 * print指令的用法:以輸出Hello, World!為例 ```python #紅色的字,會被印出來 print("Hello, World!") #如果印你好該怎麼辦? print ("你好") #使用一對單引號也可以 print ("你好") ``` ### a.自動換行 * 每一個 print() 印完都會自動換行,不需要其他的指令 * 以下範例參考 ```python= ##自動換行程式碼範例 print(“2-3=5”) print(“2-3=5”) ``` ### b.拒絕換行 * 可以加上參數控制:end是控制換行的參數 * end參數用法如下: * print後面需要加上, end=“” * 以下程式範例參考 ```python= #拒絕換行程式碼範例 print(“2-3=5”, end=“”) print(“2-3=5”) ``` ### c.拒絕換行,但是兩個句子中間有空格 * 可以加上參數控制:==end==是控制換行的參數 * end參數用法如下: * print後面需要加上, ==end=" "== * ==" "雙引號中留個空== * 以下程式範例參考 ```python= ##拒絕換行程式碼範例 print(“2-3=5”, end=“ ”) print(“2-3=5”) ``` ### d.多空一行 * \n,表示換行 * 以下範例參考 ```python= #多空一行程式碼範例 print(“*\n”) print(“**\n”) print(“***\n”) ``` ### e.一次多空幾行 * 可以加上參數控制:end是控制換行的參數 * end參數用法如下: * print(1, end=“\n\n”) * 以下程式範例參考 * 可以加上參數控制:end是控制換行的參數 ```python= #一次多空幾行程式碼範例 print(“*”, end=“\n\n\n”) print(“**\n”) print(“***”) print(“****”) ``` ### f.資料輸出的4種方法總整理 :::info :::warning * 第一種寫法 * 指定兩個變數並且==分兩行==輸出 ==print(a)== ==print(b)== * 在**同一行**輸出2個以上變數 *==print(a,b)== * 第二種寫法 * 使用format解決輸出問題 * ==print("{}\n{}".format(a, b))== * 雙引號 * 後面接 .format(變數串) * 裡面用大括號 {} 代表要取 format() 裡面放的變數來替換在這個大括號的位置 * 雙引號內的大括號由左到右會依序對應 format() 裡面由左到右填的變數 * 第三種寫法 * ==print("{0}\n{1}".format(a, b))== * {}代表未知的變數 * 0與1指的是後面format裡相對應的變數 * ==注意: 編號是由 0 開始喔!== * 第四種寫法 ==print("{a}\n{c}".format(a=a,c=b))== * 將編號改用變數名稱 * format() 內指定大括號內的變數名是對應哪個變數 * 注意: 大括號內的變數名稱是對應 format() 內的變數名稱,不是直接對 應外面的變數名稱喔 ::: ## 2.註解 ![](https://hackmd.io/_uploads/Byg7gaC16.jpg) * 註解的寫法有二:分成單行與多行 * 多行註解: 使用 ==三個雙引號== 包圍(包在三個雙引號之間的所有文字都是註解) * 單行註解: 使用 ==#== 開頭( # 後面的文字都是註解) ## 3.變數宣告與賦值 * 變數:數值會改變的數,稱為變數(variable),例如:溫度 * 常數:而恆常不會變動的數叫做常數(constant),例如:圓周率π(3.14159265359…) * 在程式設計的過程中,變數的值需要能夠隨時存取或重新得到得到新值(賦值) * 因此,變數必須存放在電腦的記憶體,以便隨時存取 * 變數的值(資料)放在電腦的記憶體,記憶體猶如資料的家 ![圖](https://hackmd.io/_uploads/B1mrKJdlT.jpg) * 如何給變數取名 * 原則上隨便取 * 可以是單獨的字母:a、b、c * 可以是多個字母的結合:aaa、bbb、ccc * 也可以是混數字的:number1、number2 :::danger * 注意 * 變數開頭要是字母或底線(_),不能是數字! * 大小寫不一樣就是不同變數喔! * aaa ≠ AAA * 名字中間不能夾有空白 * 有預設功能的字不能用,如:if, for, else, … * [Python關鍵字參考](https://www.w3schools.com/python/python_ref_keywords.asp) ::: * 變數的賦值 * 例:a=3 !![圖](https://hackmd.io/_uploads/Bk3uFyueT.jpg) :::warning * • 程式碼意義 * 代表向電腦申請 一個櫃子 準備用來儲放資料 * 櫃子的位置需要設定名字 * a 是櫃子位置的名字 * a 稱為 變數名 * 3 是資料內容 * 3 是櫃子內存放的資料,也可以說 * 3 是變數的內容值 ::: 補充:資料的輸出 * ==雙引號==內的會視為==一般文字==印出 * 不是放在雙引號內的會視為==變數==,程式會先找變數存放的值,再印出找到的那個==存放值== ![圖](https://hackmd.io/_uploads/rJxjck_xT.jpg) ## 4.輸入語句 資料輸出指令是input() * 例: 使用者輸入甚麼資料就印甚麼資料 ```python= num = input() print (num) ``` * input()==不負責分辨資料喔!== * 不論輸入甚麼,input()收到的資料就是一堆文字(字串) * 這堆文字裡是否有整數 小數還是特殊符號資料的,input()是不知道的喔! :::info * 使用int轉型成整數: * num = int(intput())** *用float轉型成浮點數: **num = float(input())** ## 5.資料型態 **在 Python 中,資料型態包含** * 整數 int * 浮點數 float * 複數 complex * 文字 str * 布林 bool **type: 可以問出資料型態** 例: ```python= num1 = 10#指定整數變數 num2 = 10.01 #指定浮點數變數 num3 = 10 + 10j#指定複數變數 text = 'DICE'#文字加單引號 flag = True print(type(num1)) print(type(num2)) print(type(num3)) print(type(text)) ``` **執行結果** :::warning <class 'int'> <class 'float'> <class 'complex'> <class 'str'> <class 'bool'> ::: ## 6.算術運算子 Python 的 7 則運算 ![](https://hackmd.io/_uploads/rJ94Jv9WT.jpg) :::danger * Python將==所有的輸入都視為字串==,也就是將輸入的10與20都是文字,必須轉型成數字才能運算 * 例如: * x=int(input()),將輸入的資料轉為整數 * y=float(input()),將輸入的資料轉為浮點數 ::: :::success * 概念1: 運算的優先順序,與數學運算是一樣的 * 跨號優先 * 乘、除(整數除法/符點除法)與取餘數優先 * 同一運算式含有數個加與減,由左至右逐一運算 * 概念2: 整數除法 vs 浮點除法 * 整數除法: // * 以整除結果為準 * 得到的值必為==整數== * 即結果會是強迫使用 int() 轉型後的值 * 10 // 3 = 3 * 浮點除法: / * 結果以===浮點數==表示 * 即結果會是強迫使用 float() 轉型後的值 * 10 / 2 = 5.0 ::: ## 7.判斷式-if * 介紹關係(比較)運算子 ![](https://hackmd.io/_uploads/rJM8Hq7fp.png) * 當 if 條件式符合時就會執行紅框內的程式,若不符合就不執行 ![](https://hackmd.io/_uploads/BJ7SB97Mp.png) * if 是根據後面的布林(Bool)值決定是否執行。 * if 後面若是 True,就會執行接著的程式 * if 後面若是 False,就不會執行 * 所以,一般使用時 if 後面接的會是==條件式==(**關係/比較運算**),當條件符合(True)時就執行,條件不符合(False)就不執行。 例:判斷分數是否及格 ```python= score = int(input()) if score > 0 : print(“{0}分及格".format(score)) ``` :::danger * if條件式後面,為什麼有冒號? * 冒號代表後面會有一個獨立執行的區塊 * if所包含的敘述式,為什麼要縮排? * 為了區分冒號後面的程式碼與前面(包含if那行)式不同的執行區塊,必須設定縮排! ::: ## 8.判斷式-if/else * 不適這樣就是那樣 * 判斷式會常用到關係式(比較)運算子與邏輯算子 ![](https://hackmd.io/_uploads/rJ1VSjXf6.png) * if/else語法 ```python= if 條件式: 敘述式; else: 敘述式; # 當條件式成立時, 執行敘述式A; 不成立時, 執行敘述式B ``` * 概念 1: 談談寫作風格 - 區塊 * if與else的下方分別包含一個區塊 * 連續有著同樣縮排的行數視為同一個區塊 * 概念 2: 再談寫作風格 - ==分號== 與 ==敘述式== * 分號: * 某些程式語言(例如: C),敘述式尾端一定要加分號(;),Python 則不要求 * 但若多個敘述式放在同一行,則務必在敘述式尾端加分號 * 為了程式的可讀性,建議保持一行一個敘述式,維持不使用分號的風格 * 一行一個敘述式可讀性高 一行多個敘述式可讀性低 * 敘述式: * 一行一個敘述式,敘述式尾端可加也可不加分號(;) * 可讀性高 * 一行多個敘述式,每個敘述式尾端用分號區格 * 可讀性低,不建議使用 ## 9. 重複結構 ### 9-1. 計數器控制 * 使用重複結構的指令while,進行重複 * 執行重複主體次數以1000次為例 ```python= i=1 #i的作用是計數器,必須設定起始值 while i<=1000: #重複的條件是i<=1000 #重複的主體 i=i+1 : #主體被執行一次,計數器就加 ``` ![未命名](https://hackmd.io/_uploads/HkN6Hgira.png) 例: 輸入n的值,執行n次的重複次數迴圈 ```python= i = 0 #起始條件設定 n = int (input()) while i < n: #印的次數不能超過n次 print ("HaHaHa!") #重複的主體 i =i +1 #條件的遞增 ``` ![12](https://hackmd.io/_uploads/r1PNvgiSp.png) ### 9-2. 警示值控制 * while是當條件式符合時,就會一直執行後面接的程式指令 * 判斷重複主體何時結束: (==while條件是不符合==) * 例: 輸入值決定迴圈結束,以輸入-1為何 ```python= n = int(input()) #起始條件設定 while n !=-1: #條件檢測 print("HaHaHa!") #重複的主體 n = int(input()) #不可省略,否則會兆呈無窮迴圈 ``` ![8](https://hackmd.io/_uploads/rk1eKesH6.png) * if/while比較 * if 是當條件式符合時,就會執行一次後面接的程式指令 * while是當條件式符合時, 就會一直執行後面接的程式指令 ![未命名2](https://hackmd.io/_uploads/BkOZ5xjSp.png) ### 9-3. for迴圈 ```python= for 控制變數 in 條件範圍: 敘述式 #重複的主體 ``` * 條件範圍 * range(初始值, 條件式, 條件改變) * range() 可視為一個等差級數列表表達式 * 首項 => 初始值 * 末像 => 條件式 * 公差 => 條件改變 while vs. for ![未命名](https://hackmd.io/_uploads/rkChuvaIa.png) * 程式碼比較寫法(以1印到10為例) * 用while解 ```python= i = 1 while i < 11: print(i) i = i + 1 ``` * 用for解 ```python= for i in range(1, 11, 1): print(i) ``` ![未命名1](https://hackmd.io/_uploads/HyEg9w6La.png) ### 10. 自訂函式 * 甚麼是函式? * 函式(function)是一個建構程式時的小區塊 * 就像是一台自動販賣機,可以指定它的功能並且規範,例如: * 輸入:硬幣、商品 * 輸出:所選擇的商品 * 輸入、輸出和功能已照規定設計好,要使用的時候,也只能依照著這個規定來使用它。 * 函式的目的 * 提高程式可讀性與可重用性 * 將常用的或者重複的程式碼,分離出來成為一小段獨立程式區塊,稱為模組或函式 * 可以利用函式的技巧將大問題切割成小問題,以便於各個擊破…這個需要好好寫作,才能體會了 *函式的種類 (function) * 內置函式 * 程式語言預先定義的函式 * 格式不可變動 * 自訂函式 * 使用者自己依照需求定義的函式稱為自訂函式,使得大問題可以切割成小問題 * 程式編輯者自己定義的函式 * 根據使用需求,程式編輯者隨時可以更動函式的定義 ![未命名2](https://hackmd.io/_uploads/rJepKlu6L6.png) * 如何自訂函式? 1. 先將指定功能的程式碼定義在同一區塊,這個區塊起始於def 2. 函式名稱(為函式命一個英文名) 3. 在函式名稱() 的括號內寫入要傳入哪些變數(稱為參數),這些變數來自主程式 4. 自訂函式的程式碼必須內縮 5. return 將自訂函式執行結果回傳主程式的自訂函式呼叫處 * ==自訂函式的四種可能== :::info * 1.沒有參數,沒有回傳值的自訂函式 ```python= def hello(): print(‘Hello function') hello() # 只要一直加 hello() 就好 ``` ::: :::success * 2.有參數,沒有回傳值的自訂函式 ```python= def hello(n): #函式的跨號內,參數n,表示有傳入參數 for i in range(1,1+n,1): print("Hello function") n=int(input()) hello(n) #傳入參數n,呼叫副程式(函式)hello即可工作 ``` ::: :::warning * 3.沒有參數,有回傳值的自訂函式 ```python= def add(): #函式的跨號內,沒有任何參數,表示沒有傳入參數 sum=0 for i in range(1,101,1): sum=sum+i return sum #有return就會傳值回主程式 print(add()) #呼叫副程式(函式)add工作後傳值回主程式 ``` ::: :::danger * 4.有參數,有回傳值的自訂函式 ```python= def area3(r, h): ##函式的跨號內,沒有任何參數,表示沒有傳入參數 area2 = r * r * 3.14 return area2 * h #return 可以決定area3函式區塊要回傳甚麼值 #主程式 r=3 volume = area3(r, 10) #呼叫函式area3 print(‘半徑 {0} 時的圓柱體體積: {1}'.format(r, volume)) ``` ::: ## 11. 資料四大結構 * 陣列 * 將同類型資料連續放在一起的資料結構是陣列(array) * 在日常生活中,利用編號幫我們記住東西的位置與順序 * 在陣列中,我們使用索引(index),找到相對應的資料。在電腦的世界中,==陣列的索引值通常從0開始== * 串列 * 在python中使用list來操作陣列資料結構 * list稱為清單也稱為串列和列表 * 串列中可以放相似的資料 * 串列的建立 ```python= numList = [3, 10.12, [] ,’text’] 產生一個 [] (串列) 指派 給 numList (變數名稱) 串列存放的每個資料可稱為元素(element) 或 項目(item) ``` ![未命名](https://hackmd.io/_uploads/Bkr8Nj8Pp.png) * 串列的資料結構 * 串列不挑食 * 整數也吃 * 浮點數也吃 * 字串也吃 * 就算丟個串列進去也吃喔! * ![未命名2](https://hackmd.io/_uploads/HJnmSsLDp.png) * 如何取串列內的某個項目? * 讀取元素:使用串列名稱加上元素序號,可以讀取列表中的某個元素 ```python= numList = [‘apple’, ‘2.0’,’5’,True] print(numList[0]) print(numList[1]) print(numList[2]) print(numList[3]) """ # 執行結果如下: apple 2.0 5 True """ ``` * 修改元素:串列名稱[索引值] = 新值 ```python= numList = [‘apple’, ‘2.0’,’5’,True] numList[0]=‘banana’ print(numList) """ # 執行結果如下: [‘banana’, ‘2.0’,’5’,True] """ ``` :::danger * 新增元素 * 方法1:使用append() * 在串列尾部添加一個新元素 * 方法2:使用insert() * 將一個元素插入在串列的任意位置 * 方法3:使用”+” * 將一個新列表附加在原串列的尾部 * 方法4:使用extend() * 將一個列表附加在原串列的尾部 ::: * 串列的使用(1)檢索元素 * 1.檢索元素 * In * 使用in運算子檢查某個元素是否在串列 ```python= >>>buylist = [‘蘋果’,‘香蕉’,‘櫻桃’] >>>print(‘香蕉’ in buylist) True ``` * count * 使用count()方法計算串列中某個元素出現的次數 ```python= >>>buylist = ['蘋果','香蕉','櫻桃’] >>>print(buylist.count('蘋果’)) 1 ``` * • len * 列出串列裡面有幾個項目 ```python= >>>buylist = ['蘋果','香蕉','櫻桃’] >>>print(len(buylist)) 3 ``` * 2.刪除元素 * del:使用del刪除某個特定位置的元素 ```python= >>>buylist = ['蘋果','芒果','莓','櫻桃','橘子’] >>>del buylist[0] >>>print(buylist[]) ['芒果','草莓','櫻桃','橘子’] ``` * remove:使用remove刪除某個特定值的元素 ```python= >>>buylist = ['蘋果','芒果','莓','櫻桃','橘子’] >>>buylist.remove(‘櫻桃’) >>> print(buylist[]) ``` * pop:彈出最後一個元素 ```python= >>>buylist = ['蘋果','芒果','草莓','櫻桃','橘子’] >>>pop() 橘子 ``` ### 11-1. 串列(List) ### 11-2. 元組(Tuple) ### 11-3. 集合(Set) ### 11-4. 字典(Dict)