# Python基礎語法筆記 ## 一、變數 ### 1、命名規則 由英文、數字、底線組成,但不可用數字開頭,也不能與python內建保留字相同。 :::info 例: | 變數名 | 可否使用 | |:------- |:------------------ | | abc_123 | 可 | | a bc | 不可(空白字元) | | Class | 不可(與保留字相同) | ::: ### 2、指派 不須宣告,依指派值自動設定資料型態。 :::success 語法:變數名稱 = 指派值 ::: :::info 例: ```python a=5 #a為整數,值為5 b=3.14 #b為浮點數,值為3.14 d='abc' #c為字串,值為abc d=[1,'a','ABC'] #d為列表,值為1,'a','ABC' ``` ::: ## 二、資料型態 ### 1、型態類別 * 數值型態:int(整數)、float(浮點數)、bool(布林) * 字串型態:str(字串)、chr(字元) * 容器型態:list(列表)、dict(字典)、tuple(元組)、set(集合) ### 2、型態轉換 * python自動轉換 :::info 例: ```python a=10 #a的型別為int,值為10 a=a+1.5 #a的型別此時被轉變成float,值為11.5 ``` ::: * 程式碼強制轉換 :::success 語法:資料型態() ::: :::info 例: ```python int() #將括號內的資料轉換為int float() #將括號內的資料轉換為float str() #將括號內的資料轉換為str list() #將括號內的資料轉換為list ``` ::: ## 三、輸出與輸入 ### 1、輸出 :::success 基本格式:print(項目1,項目2,......,sep=分隔字元,end=結束字元) 其中sep預設為' '(空白字元),end預設為'\n'(換行字元) ::: :::info 例: ```python print('abc',123) #輸出為abc 123 print(1,45,sep='23',end='67')#輸出為1234567 ```` ::: 補充:跳脫字元 :::spoiler | 跳脫字元 | 說明 | |:--------:|:-----------:| | \\ | 輸出\ | | \' | 輸出' | | \n | 換行字元 | | \t | (tab) | | \b | (backspace) | ::: #### 格式化輸出 有三種方式可以達成格式化輸出,分別是: * %-formatting * str.format (Python 2.6+) * f-string (Python 3.6+) :::info 例: ```python #%-formatting print('a%s,%d %f') % ("bc",123,3.14) #輸出為abc,123 3.140000 #str.format s='a{e},{f} {g}'.format(e='bc',f=123,g=3.14) print(s) #輸出為abc,123 3.14 #f-string e,f,g='bc',123,3.14 print(f'a{e},{f} {g}') #輸出為abc,123 3.14 ``` ::: ### 2、輸入 :::success 語法:變數=input([提示字串]) 經由input( )函式讀入的資料,其資料型態皆為字串 ::: :::info 例: ```python s=input() #s為字串 i=int(input) #i會將輸入的字串轉移成數字 a,b=map(int,input().split()) #一行輸入多個變數時須使用map l=list(map(int,input().split())) #l將單行輸入的數字轉移成列表儲存 m=[int(x)for x in input().split()] #效果同上 ``` ::: ### 3、註解 * #為單行註解 * 多行註解可使用'''前後包括 :::info 例: ```python a=0 # a=1 這是單行註解 ''' a=2 a=3 這是多行註解 ''' a=a-1 print(a) # -1 ``` ::: ## 四、運算子與運算式 * 算術運算子:+, -, *, /, %, //(整數除法), **(次方) * 關係運算子:>, <, >=, <=, ==, != * 邏輯運算子:and, or, not * 成員運算子:in * 位元運算子:&(且), |(或), ^(互斥或), ~(反相) * 位移運算子:<<(向左位移), >>(向右位移) 其中算術運算子可以簡寫 例如將a=a+1簡寫成a+=1 成員運算子的運算結果會回傳布林值 ## 五、if敘述 :::success 語法:if(條件式):程式區塊 若程式區塊有多行 則須寫在下一行並tab一大格 不可直接寫在條件式右側 切記條件式後方要接冒號 ::: 可與if搭配的還有else和elif,else的後方不須條件式 程式放if的數量沒有限制(可以巢狀放置) :::info 例: ```python #正負數判斷 s=int(input()) if(s>0):print(1) elif(s==0):print(0) else:(print(-1)) ``` ```python #閏年判斷 y=int(input()) if(y%100==0): if(y%400==0):print(1) else:(print(0)) else: if(y%4==0):print(1) else:(print(0)) ``` ::: ## 六、迴圈 ### 1.for :::success 語法:for 變數 in 序列:程式區塊 若程式區塊有多行 則須寫在下一行並tab一大格 不可直接寫在條件式右側 切記序列後要接冒號 ::: 變數會依序走訪序列中元素 序列可為range函式、string、list、tuple、dict、set :::info 例: ```python for i in range(6):print(i) #0 #1 #2 #3 #4 #5 ``` ```python a=['a','b','c'] for j in a:print(j) #a #b #c ``` ::: ### 2.while :::success 語法:while 條件式:程式區塊 若程式區塊有多行 則須寫在下一行並tab一大格 不可直接寫在條件式右側 切記條件式後要接冒號 ::: :::info 例: ```python a=5 while(a>0): print(a,end='') a-=1 #54321 ``` ::: ### 3.break&continue * break置於迴圈內可直接跳出迴圈 * contiune置於迴圈內可立刻執行下一次迴圈 :::info 例: ```python a=5 while(a>0): if a==4: a-=1 continue if a==1:break print(a,end='') a-=1 #532 ``` ::: ### 4.巢狀迴圈 同if 可以在迴圈內放迴圈 :::info 例: ```python a=5 for i in range(a): for j in range(i+1):print('*',end='') print() #* #** #*** #**** #***** ``` ::: ## 七、常用內建函數 * abs():回傳絕對值 * chr():ASCII轉字元 * ord():字元轉ASCII * eval():執行字串運算式,例:eval('pow(7,2)')=49 * float():將括號內資料轉成服點數 * int(x,base=10):將(base)10進制的表達式(字串)轉成10進制整數 * len():回傳物件長度 * list():將字串、元組等可迭代序列轉換列表 * map():將可迭代序列丟入函數運算,回傳一個迭代器(輸入時常用) * max():回傳括號內最大值 * min():回傳括號內最小值 * pow(base,exp[,mod]):回傳$base^{exp}\%mod$ * bin():將括號內10進制數字轉成2進制 * oct():將括號內10進制數字轉成8進制 * hex():將括號內10進制數字轉成16進制 ## 八、字串 Python對於字串的操作能力相當強大,可以直接進行串接或者擷取 :::info 例: ```python s='0123456789abcde' print(s[10:]) #abcde print(s[:5:]) #01234 print(s[3:7]) #3456 print(s[::-1]) #edcba9876543210 題外話:s[::-1]可以得到s的反轉字串 a='fghi' s=s+a print(s[10:]) #abcdefghi ``` ::: ## 九、例題 :::info ## 輸入&輸出 ### toj - 5 / Hello World! https://toj.tfcis.org/oj/pro/5/ ### toj - 92 / 天線寶寶說你好 https://toj.tfcis.org/oj/pro/92/ ::: :::info ## if敘述 ### TOJ - 94 / 判斷季節 https://toj.tfcis.org/oj/pro/94/ ### TOJ - 109 / 猜拳比賽 https://toj.tfcis.org/oj/pro/109/ ### TOJ - 114 / 我閉著眼 https://toj.tfcis.org/oj/pro/114/ ::: :::info ## 迴圈 ### TOJ - 3 / GCD https://toj.tfcis.org/oj/pro/3/ ### TOJ - 597 / 單層迴圈12 https://toj.tfcis.org/oj/pro/597/ ### TOJ - 104 / 星星樹 https://toj.tfcis.org/oj/pro/104/ ### TOJ - 110 / 六芒星的祝福 https://toj.tfcis.org/oj/pro/110/ ### TOJ - 170 / 各種星星樹 https://toj.tfcis.org/oj/pro/170/ ::: --- # THE END