###### tags:`Python` `code` # 221120 Python聯課 --- [回覆單](https://docs.google.com/forms/d/e/1FAIpQLSfYraQBSyFhWnDLr4bLWWmpNvfa11A334dyGZnM9_QamxkZ1Q/viewform?usp=sf_link) --- ### 指令 >在Shell輸入指令 執行 ``` python 檔名.py ``` 進入資料夾 ``` cd 資料夾名稱 ``` 退出資料夾 ``` cd.. ``` ## 字串 String ### 輸出`print()` >output >function >Hello World a.k.a. ~~每種語言的必經之路~~ ``` python= print('Hello World') print("Hello World") print('Hello '+'World') print('Hello', 'World') ``` - 字串 - 用單引號或雙引號將要輸出的字串包起來 - python沒有字元的概念,一律視為字串 - A single character is simply a string with a length of 1. - 反斜線跳脫字元 `'\` - function() - f(x) - f是函式/函數名 - x是參數 - print function - 可放0~多個參數 - 設定好的字串 -> 字串常數 - 引號裡面就是一個string(str) - 連接字串的方式 - "+" v.s "," #### 練習1001 ```python= # Please use variable to print 'BB is 16.' # Please use "+" or "," to complete the task name = 'BB' age = '16' # print(name, 'is', age, '.') print(name, 'is', age + '.') print(name + ' is ' + age + '.') ``` #### 註解 - 程式不執行 - 為了讓日後的自己看懂筆記 - 為了讓團隊的其他人看懂程式 - 分為單行註解和多行註解 ``` python= '''多行註解是在註解內容的前後加上三個引號''' """單引號或雙引號都可以喔 # J個是單行註解 ``` ### 輸入`input()` >input >variable ``` python= a = input('Please enter your name. ') b = input('How old are you?') print(type(b)) b = int(b) print(type(b)) # 也可以這樣寫 b = int(input('How old are you?')) ``` - 通常解題的時候不傳參數 - 翻譯:`input()` 裡面不放字串 - 撰寫互動式程式時建議設定提示訊息 - 翻譯:`input()` 裡面放字串告訴使用者輸入什麼 ### 變數Variable - 功能:存放資料 - 預設的變數種類為string - 如何轉成其他資料類型? - python的變數:不用特別指定資料類型 ([其他語言](https://ithelp.ithome.com.tw/articles/10202657)) - 如何得知變數的資料類型:`type()`(先聽過去,後面才會用到) | 資料類型 | function | 備註 | | -------- | -------- | -------- | | 整數integer | int()| 將數字字串/浮點數轉成整數| | 浮點數float | float()| 將數字字串/整數轉成浮點數| | 字串string | str()| 將整數/浮點數轉成字串| | 布林值boolean | bool()| 將參數轉為布林值| #### 變數命名規則 1. 不能有語法關鍵字`:SyntaxError: invalid syntax` 2. 盡量取有意義的字 3. 可包含數字、大小寫字母、底線_ 4. 首字不為數字 #### 語法關鍵字/保留字 ```python ''' False If None True and as break class continue def del elif else except for from global import in is lambda not or pass return try while with ''' ``` --- ## 運算 ### 運算_算術運算 >加 減 乘 除 >商數 餘數 次方 ``` python= x = 15 y = 2 print(x + y) print(x - y) print(x * y) print(x / y) print(x // y) print(x % y) print(x ** y) ``` #### 練習1002 >可以參考上一個範例 >用到 `print()` `input()` `int()` ```python= # 輸入名字,存在變數name # 輸入年齡,存在變數age # 輸出"Your name is 名字 and you are 年齡" # 輸出10年後的年齡 name = input("name? ") age = input("age? ") print("Your name is", name, "and you are", age) # print("Your name is", name, "and you are", age + '.') ``` format的版本 `f-string` ```python= name = input("name? ") age = int(input("age? ")) print("Your name is", name, "and you are", age) # f-string # format print(f'Your name is {name} and you are {age}') print(age + 10) ``` ### 運算_關係運算 >大於 小於... etc. ```python= a = 6 b = 3 print(a == b) print(a != b) print(a > b) print(a < b) print(a <= b) print(a >= b) ``` - 會輸出布林值 #### 布林值 Boolean > True & False ( 注意大小寫 ) - 關係運算的結果:用布林值表示 - `bool()` 除了整數0為False,其他都是True ```python= # bool() # 請回覆輸出值 print(bool('0')) print(bool('1')) print(bool(0)) print(bool(1)) print(bool('Hi')) ``` #### `=` v.s `==` - `=` 是賦值符號,`==` 是關係運算 ### 邏輯運算 ```python= a = int(input()) b = int(input()) print(a and b) print(a or b) print(not(a and b)) print(not(a or b)) ``` #### 運算子 Operator - and 且 - 兩個都成立才成立 - ` ` ***`1` `0`*** ***`1`*** `1` `0` ***`0`*** `0` `0` - or 或 - 其中一個成立即成立 - ` ` ***`1` `0`*** ***`1`*** `1` `1` ***`0`*** `1` `0` - xor 互斥或 - 僅其中一個成立才成立 - ` ` ***`1` `0`*** ***`1`*** `0` `1` ***`0`*** `1` `0` - not 非 - 參數不成立即成立 :::warning - Python沒有xor的邏輯運算 - 挑戰題:請用and或or完成xor的功能 ::: --- ## 決策式 Decision making > `if` `elif` `else` > 以下為一題組 > [.](https://youtu.be/-f7z2krMJHI) >注意看,這個男人太狠了,這個男人叫大壯,他的食量不定,有時可以吞下大麥克套餐,有時只要一杯咖啡就可以了!每到飯點,他的女朋友小美會詢問大壯的飢餓值,再根據大壯輸入的飢餓值 `a` 來準備餐點。`a` 越大表示越餓,請看以下範例: #### if > 請除錯 ```python= """ # 題目說明 有一整數a,若a大於等於1000,則輸出? """ a = input() if a >= 1000: print('I'm hungry.') print('What do u like to eat?') ``` - `if a >= 1000:` 為一個 if statement - 一個if block為:if statement後面縮排進去的程式 - 所以2~3行是一個if statement - 若輸入800會輸出哪幾行? - 若輸入1000會輸出哪幾行? #### if-else ```python= a = input() if a >= 1000: print("Let's grab something to eat.") else: print("I'm full.") ``` - 要有 `if` 才可以放 `else` - `else` 為剩下的狀況 #### if-elif ```python= a = input() if a > 1000: print("Let's grab something to eat.") elif a == 1000: print("I'm full.") ``` - 要有 `if` 才可以放 `elif` - `elif` 為剩下狀況中,再去判斷 #### if-elif-else ```python= a = input() if a > 1000: print("I want a hamburger combo.") elif a == 1000: print("I want a cup of coffee.") else: print("I don't feel like eating.") ``` - `elif` = else if - 要有 `if` 才可以放 `elif` 和 `else` - 中間可以放很多個 `elif` - 只有最後能放 `else` --- ### for-loop #### 印數字 ```python= # for i in range(start, stop, step): # 從start跑到stop-1 for i in range(5): print(i) ``` - to iterate a sequence - sequence:tuple, list, dict, other iterable objects - 現階段先將loop理解為「可以重複執行」的工具 - for-loop的特點:已知跑幾圈迴圈 - 要在迴圈內執行的程式記得縮排 #### index - 從0開始 #### 練習1003-印星星 ```python= # for i in range(start, stop, step): # 從start跑到stop-1 for i in range(5): print('*') ``` #### ```python= # 星號三角 """ # ex(+). # 正左直角 * ** *** **** ***** # 倒左直角 ***** **** *** ** * # 正右直角 * ** *** **** ***** # 倒右直角 ***** **** *** ** * # 金字塔形 * *** ***** ******* ********* """ for i in range(1, 6): print(i, '*'*i) print() for i in range(1, 6): print(6-i, '*'*(6-i)) # print(' '*? + '*'*(6-i)) ``` ### while-loop > 大壯覺得一天三餐太少了,他決定要做個隨時都能點餐的系統 ```python= hungry = True while hungry: print('1.Hamburger Combo 2.Coffee') food = input('What do you want to eat?') if food == 1: hungry = False ``` #### 練習1004 > 請用上面例題改 ```python= """ # 請輸入饑餓值 a # 判斷大壯現在要吃甚麼 a > 1000 Hamberger Combo a = 1000 Coffee # 如果飽了就跳出迴圈 a < 1000 """ hungry = True while hungry: a = input('a?') if a > 1000: print("I want a hamburger combo.") elif a == 1000: print("I want a cup of coffee.") else: print("I don't feel like eating.") hungry = False ``` ### Homework - 試試看xor - 印星星 - 複習!!!