--- title: 'Python學習筆記' disqus: hackmd --- Python 學習筆記 = > 在看完黑馬程序員學習完Python之後,複習同時所整理的筆記。 > 後面有時候會有練習題,因為我只做出跟答案一樣的「結果」而不是「一模一樣的程式碼」所以程式碼很可能跟黑馬頻道的不一樣,若寫法不同以自己習慣的為主即可。 > > 第一次使用HackMD進行筆記,內容可能不完整或排版不佳 > 若有疏漏、建議或問題歡迎Email給我。 目錄 == [TOC] 進行Pyhthon前需要知道.. == #### 1. 要先下載Pyhton再去下載IDE #### 2. 請挑一款適合你的介面,Jupyter、Spyder、Pycharm...等等 > 筆者是用Spyder進行Coding #### 3. Python是利用縮排進行辨認,所以每一個空格都很重要!!! #### 4. 註解是用# 字號進行註解,我們通常會在# 後空一格,這是默契 Pyhton 數據類型與轉換 === Python數據類型: --- Python基礎數據類型,可以通過type(x)查看 #### **1. Number :數字類型** 又分int(整數)、float(浮點)、complex(複數)、bool(布爾判斷,又稱邏輯) #### **2. String :字符串** *由任意字符所構建* #### **3. Tuple :元組** 內容不可變動、具順序性(有index索引性質) #### **4. List :列表** 內容不可變動、具順序性(有index索引性質) #### **5. Set :集合** 內容可變動、不具順序性、不支持重複概念 #### **6. Dictionary:字典** 一堆的key-value組成 Python數據類型察看與轉換 --- ``` # 在print語法中,直接輸出類型type #寫法1 print(type("Hello world")) #寫法2 string_type = type("Hello") print(string_type) # 將數字轉換成string num_str = str(90) print(type(num_str),num_str) # 將字符串轉換成數字 num = int("11") print(type(num),num) # 浮點數轉整數 int_num = int(18.3994) print(type(int_num),int_num) ``` Python運算符號與運用 = ### Python 運算符號表達: + 加 - 減 * 乘 / 除 // 取整除 % 取餘數 ** 指數 ``` --復合運算符號 += c+=a 等同於 c=c+a 意思為將 +連同C一起賦予a -= c-=a 等同於 c=c-a *= c*=a 等同於 c=c*a /= c/=a 等同於 c=c/a %= c%=a 等同於 c=c%a **= c**=a 等同於 c=c**a //= c//=a 等同於 c=c//a ``` Input語法與Print函數 = > 利用Input語句獲得用戶訊息,並且Print出用戶所使用的訊息。 用%宣告(占用)位置,並且用S表示字符串,意思為我將要占用這個地方,等等會輸入字符串* >有個更便捷的寫法print(f'你想印出的語句{函式}'),後面有範例 ``` # # Input語法:接受鍵盤輸入內容 print("請告訴我你是誰") name = input() print("我知道了,你是%s" % name) # # input可以在使用者輸出內容前,輸出提示內容 name = input("請告訴我你是誰") print("我知道了,你是%s" % name) # 輸入數字類型 # input不論你輸出甚麼,都會當成字符串 num = input("請告訴我你的銀行卡密碼:") print("你的銀行卡密碼的類型是:", type(num)) # 若要輸出數字類型,就需要數據轉換 # 藉由int語句將input輸入的數據轉換成數值 num = input("請告訴我你的銀行卡密碼:") num = int(num) print("你的銀行卡密碼類型是:",type(num)) ``` ``` # 練習題 input語法練習 user_name = input("請輸入您的大名:") user_type = input("請輸入VIP等級:") print("您好:%s ,您是尊貴的 %s 用戶,歡迎您的光臨" % (user_name,user_type)) ``` Bool(邏輯)的運算與應用 = ### 比較運算符號: #### 符號: ==, !=, >, <, >=, <= #### 意義:等於(要完全相等)、不等於、大於、小於、大於等於、小於等於 ##### 判斷結果為1 v 0,就是TRUE or FALSE ##### 特別說明邏輯的運算: ##### And(且)、Or(或)、Iff大家都很清楚,主要是Imply(若P則Q)會比較難懂 ### 若P則Q、非Q則非P: #### 前提成立-->結論成立,P為Q的充分條件、Q為P的必要條件 #### 懶人記憶:若前提假設為假,無論結論是否為真,其判斷皆為真 | p | q | p and q | | p | q | p or q | | --- | --- | ------- | --- | --- | --- | ------ | | 0 | 0 | 0 | | 0 | 0 | 0 | | 0 | 1 | 0 | | 0 | 1 | 1 | | 1 | 0 | 0 | | 1 | 0 | 1 | | 1 | 1 | 1 | | 1 | 1 | 1 | | p | q | p imply q | | --- | --- | --------- | | 0 | 0 | 1 | | 0 | 1 | 1 | | 1 | 0 | 0 | | 1 | 1 | 1 | ``` # 定義variable 存儲的bool type數據 bool_1 = True bool_2 = False print(f"bool_1變量的內容是:{bool_1}, 類型是:{type(bool_1)}") num1 = 10 num2 = 10 print(f"10 == 10的結果是:{num1 == num2}") print(f"10 != 15的結果是:{num1 != num2}") name1 = "itc" name2 = "icb" print(f"名字內的結果:{name1 == name2}") #大於小於等於的示範 num1 = 10 num2 = 5 print(f"10 > 5 的結果是{num1 >= num2}") print(f" 10 <5 的結果是:{num1 <= num2}") ``` 迴圈 = ## 1.IF與其相關語法 ### If > 若條件為TRUE則運行;FALSE則不執行 > 在這裡我並未介紹If not語句,在後面爬蟲會重新說明 ``` # if基本語法 age = 30 if age >= 18: print("哎呀") print("好老了喔") # 黑馬練習題 age = input("請輸入您的年齡:") age = int(age) print(f"歡迎來到兒童遊樂園,兒童免費,成人收費。\n請輸入您的年齡:{age}\n") if age >= 18: print("您已成年,遊玩需要補票10元") ``` ### If...else >若條件為TRUE,則執行if的內容 >若條件為FALSE,則執行else的內容 ``` # if,else語法 age = int(input("請輸入您的年齡: ")) if age >= 18 : print("您已成年, 需要買票10元") else : print("您尚未成年,可免費進場") # 黑馬練習題 height = int(input("請輸入您的身高(cm) : ")) if height > 120 : print("您的身高超出120cm, 遊玩需要加票10元") else : print("您的身高未超出120cm, 可免費遊玩") print("祝您遊玩愉快") # =================================================================== ``` ### If...elif...elif...else >若第一個條件為TRUE,則執行if的內容 >若第一個條件為FALSE,判斷下個條件elif的內容,TRUE則執行,FALSE則判斷下一個elif >若上述條件全為FALSE,則執行else內容 ``` # 多條件語句if...elif...elif...else height = int(input("請輸入您的身高(cm) : ")) vip_level = int(input("請輸入您的VIP等級 : ")) if height <120: print("身高小於120cm , 可以免費遊玩") #滿足第一句後面就會停止 elif vip_level >3 : print("vip級別大於3, 可以免費.") else : print("不好意思,條件都不滿足, 需要買票10元") ## 可以直接將variable寫進去if條件句 if int(input("請輸入您的身高(cm) : ")) <120: print("身高小於120cm , 可以免費遊玩") #滿足第一句後面就會停止 elif int(input("請輸入您的VIP等級 : ")) >3 : print("vip級別大於3, 可以免費.") else : print("不好意思,條件都不滿足, 需要買票10元") ### if...elif...elif...else語法黑馬練習題 if int(input("請輸入第一次猜想的數字: ")) == 10 : print("答對了!") elif int(input("不對,再猜一次: ")) == 10: print("答對了!") elif int(input("不對,再猜最後一次:")) != 10: print("Sorry, 全部猜錯啦, 我想的是: 10") ``` ### 多條件語句判斷 > 先用最外層IF進行判斷,接著在外層IF內還有一個IF 若內層IF為TRUE,則先執行內層IF後,再執行外層else 若內層IF為FALSE,則先執行內層else後,再執行外層else ##### 若你的身高為130cm、VIP等級為6 ##### 經過程序後: > 在最外圈IF為TRUE,身高超過限制 > 接著進入內圈判斷VIP等級為多少,VIP等級大於3 > 內層IF判斷為TRUE,Print出【你可以免費遊玩】 > 最後執行外層else,Print出【歡迎你!免費遊玩】 ``` # 多層次條件句 if int(input("你的身高是多少:"))>120: print("身高超出限制, 不可以免費") print("但是, 如果VIP級別大於3, 可以免費") if int(input("你的VIP級別是多少:"))>3: print("恭喜你, VIP級別達標, 可以免費") else: print("sorry 你需要買票10元") else : print("歡迎你! 免費遊玩") ``` ### 利用多次邏輯判斷,猜數字 > 這裡先行透過Import,從外面導入random這個Packages,因為我們要讓電腦隨機產生數字 > 後面會寫關於Packages的相關知識 ``` ### 透過三次猜測機會猜出號碼 ### import random num = random.randint(1, 10) # 產生1~10隨機數字 guess_num = int(input("你猜的數字:")) if guess_num == num : print("恭喜一次就猜對") else: if guess_num > num: print("你的數字猜大了") else: print("你的數字猜小了") guess_num = int(input("再次猜的數字:")) if guess_num == num: print("恭喜你猜對了!") else: if guess_num > num: print("有夠會猜,又猜大了了不起") else: print("猜小了哥,沒那麼誇張吧..") guess_num = int(input("最後一次猜的數字:")) if guess_num == num : print("恭喜你終於猜對了") else: print(f"給你機會不中用阿, 最後一次了還猜不到, 阿數字不就是 {num}") ``` ## 2. For > For 迴圈用法 > 語法:for 臨時變量 in 數據容器: ``` # for循環 name = "Hello world" for x in name : print(x) 黑馬練習題 定義name = "itheima is a brand of itcast" 透過for循環,找出有多少個a name = "itheima is a brand of itcast" x = 0 for i in name: if i == "a" : x +=1 print(x) ``` ``` for 循環中的range語法 # 語法1 # range(num) 獲取從一個0開始倒num的序列,但不含num本身 range(5)=[0,1,2,3,4] # 語法2 #range(num1, num2) # 獲得一個從num1開始,倒num2結束的數字序列(不含num2本身) # 如,range(5,10)=[5,6,7,8,9] # 語法3 # range(num1, num2, step)獲得從num1到num2結束的數字序列(不含num2 # 本身) # 如, range(5, 10, 2)=[5,7,9] # 語法1 for x in range(10): print(x) # 語法2 for x in range(5,10): print(x) # 語法3 for x in range(5, 10, 2): print(x) for x in range(10): print("送花") count = 0 for i in range(100): if i%2 == 0: count += 1 print(count) ``` ``` # for循環中的套娃使用 # 堅持表白100天,每天都送10朵花 i = 0 for i in range(1,101): print(f"今天是向小美告白的第{i}天") for j in range(1,11): print(f"給小美送的第 {j} 朵玫瑰花") print("小美我喜歡你") print(f"第{i}天我成功了") # 黑馬練習題 # 透過for迴圈寫出99乘法表 for i in range(1,10): for j in range(1,10): print(f"{j} * {i} = {i * j}\t", end = '') print() ``` ## 3. While ``` # 循環語法While i = 0 while i < 10 : print("我每天都要學pytohn") i +=1 # 黑馬練習題 i = 1 sum = 0 while i <= 100 : sum += i i += 1 print(f"1累加到100的和為: {sum}") ``` ``` ## while猜數字遊戲 # 獲取範圍在1-100的隨機數字 import random num = random.randint(1, 100) # 定義變量,紀錄總共猜了多少次 count = 0 # 通過bool類型變量,做循環是否繼續的標記 # 利用bool完成無限次猜測的機會 flag = True while flag : guess_num = int(input("請輸入你猜測的數字: ")) count += 1 if guess_num == num: print("猜中了") # 設置Fals就是終止循環條件 flag = False else: if guess_num > num: print("你猜的大了") else: print("你猜的小了") print(f"你總共猜測了{count}次") ``` ``` # while的套娃循環 # 外層循環:表白100天的控制 # 內層: 每天都送10朵玫瑰花 i = 1 while i <= 100: print(f"今天是第{i}天,準備告白...") # 內層循環 j = 1 while j <= 10: print(f"送給小美第{j}隻玫瑰花") j +=1 print("小美,我喜歡你") i += 1 print(f"堅持到{i-1}天小美我喜歡你") ``` ``` # 利用while列出99乘法表 # 寫法1 i = 1 while i <=9: j= 1 while j <= i: # 內層循環的print語法, 不換行, 通過\t製表示符號對齊 print(f"{j} * {i} = {j * i}\t", end='') j += 1 i += 1 print() # 輸出一個換行 # ============================================================================= # 寫法2 (我比較喜歡這種輸出結果) i = 1 while i <= 9: j = 1 while j <= 9: result = i * j print(f"{i} x {j} = {result}\t", end="") j += 1 print() i += 1 ``` ## 4. If、for、continue、break | 比較兩個語法 | 使用方式 | | ------------ | -------- | | continue | 結束當前迴圈並繼續執行「剩下的迴圈」 | | break | 直接結束當前迴圈程式碼 | ``` # countine 循環 for i in range(6): print("hello") continue print("world") # countine套娃應用 for i in range(1,6): print("hello") for j in range(1,6): print("world") continue print("你好") print("哈哈") # break 語法 for i in range(1,101): print("語法1") break print("語法三") print("哈哈") for i in range(1,6): print("hello") for j in range(1,6): print("world") break print("你好") print("哈哈") ``` ## 5. 巢式迴圈 綜合練習 > 其實前面就有巢式迴圈,就是我所打的「套娃應用」 > 就是在迴圈裡面還有迴圈 ``` ## 黑馬練習題 ## # 某公司帳戶餘額有1萬元, 給20名員工發工資 # 員編從1到20, 從1開始, 一次領取工資,每人可以領1000元 # 領工資時,依照員工績效(1-10分)(隨機生成),如果低於5不發工資,換下一位 # 若工資發完了就結束發放工資 import random account = 10000 for i in range(1,21): num = random.randint(1, 10) if num <5 : print(f"員工{i}, 績效分{num}, 低於5, 不發工資, 下一位。") else: account -= 1000 print(f"向第{i}位員工發放工資1000元, 餘額還剩{account}元") if account == 0: print("工資已發完,下個月請早") break ``` ## 結語 目前小小的紀錄了一部分: 從基礎數據類型、邏輯判斷、迴圈...等,下一篇會從自製函數到數據容器的介紹與練習 :::info **Find this document incomplete?** Leave a comment! :::