# Python Basic # 常見錯誤及需要注意的 * 一定要排版!在python裡排版是必要的 * 如果可以盡量宣告時直接指定型態 * 該空格要空格 該縮排就縮排 * 盡量避免掉語法錯誤 # 基礎中的基礎 ### 輸出 print('我是被輸出的') ```Python print('HelloWorld') ``` ## 變數 常見的變數型態有 **int(整數),float(浮點數),str(字串),bool(布林值)** * 變數宣告時不須指定型態 * 使用指定運算子( = ) 來為變數指定初始值 * 使用 **type**可以得知此變數的變數型態 * 不須設定初始值請用 **None** * 單行註解使用 **#被註解的文字** ```Python age = 16 name = 'Chen' score = 99.7 pa = False ans = None print('學生名稱',name) print('年齡',age) print('分數',score) print('會被當嗎',pa) ``` ### 輸入 變數 = input('提示字元') ### 註解 使用三個單引號來多行註解 使用井號來單行註解 ## 算術運算子 |運算子|結果| |:--: |:--:| |x+y| 相加| |x-y|相減| |x*y|相乘| |x/y|x除y| |x//y|x除y 求整數| |x%y|取x除y的餘數| |x**y|x的y次| ## 其他語法 **\n**換行 一次輸出多個變數 **%** |Code|功能| |:---: |:---:| |%% | 輸出%| |%d |10進位整數| |%f |十進位浮點術| |%c |字元輸出| (其實還有更多) ```Python chinese =int( input('國文分數:')) english = int(input('英文分數:')) math = int(input('數學分數:')) science = int(input('自然分數:')) society = int(input('社會分數:')) avg = float((chinese + english + math + science + society )/5) print('你的分數分別是') print('國文:%d\n英文:%d\n數學:%d\n自然:%d\n社會:%d\n' %(chinese,english,math,science,society)) print('平均:%f' %(avg)) ``` # 條件判斷 **使用if elif else** * 條件不必使用括號 * 條件完必須要加**分號** * 一樣!絕對要排版!不要忘記TAB和空格 * 變數型態轉換 後來(原本) ```Python name = input('請輸入您的名字') score = int(input('請輸入您的分數')) if score >= 90: print(name,'是學霸!好電Orz') elif score >=60: print('還可以接受啦') else: print(name,'!你給我去讀書!') ``` ### 邏輯運算子 |運算子|結果| |:--: |:--:| |x == y|是否等於Y| |x != y|是否不等於Y| ### 布林運算子 A 為條件A B 為條件B |運算子|結果| |:--: |:--:| |A and B|是否A B皆成立| |A or B|A或B其中一個成立| |not A|回傳A的相反| ```Python score = int(input('請輸入您的分數')) if score >= 60 and score <= 90 : print('你只有',score,'是個普通人') if not score >= 60 : print('一樣給我去念書!!') ``` # 陣列 * Range,Tuple 不可修改 * 可存不同資料 * 使用[index]讀取資料 ### Range **不可修改** Range(stop) Range(start, stop) Range(start, stop, step) * 若沒有給起始值,將預設為0 * 若沒有給間隔,將預設為1 * 遇到停止點後就會終止,因此Range中的數字將**不會包含停止點** ### Tuple **不可修改** ### List 即為array * 需使用[] * 陣列內的元素也可以是陣列(類似數學上的集合) * 使用 **[start:stop:step]**來取出資料,-1表示最後一個 ```Python number = range (1,5,1) #range name = 'John','Chris','Amber','Bob','Emma' #tuple score = [ 50,70,98,78,4] #list score[0] = [0,1,2] print('座號:',number[0],number[1],number[2],number[3]) print('姓名:',name[0],name[1],name[2],name[3]) print('分數:',score[0],score[1],score[2],score[3]) ``` ```Python str1 = 'hello world' arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] arr2 = arr1[0:5] arr3 = arr1[0:-1:2] arr4 = arr1[:] print(arr2) print(arr3) print(arr4) print(str1[5:]) print(arr1[:-1]) ``` # 重複結構 ### for 常跟range搭配使用 或者跟List搭配 有次數限定的 >for i in range() >for i in str >for i in arr ```Python score = [0,0,0,0,0] program = ['國文','英文','數學','自然','社會'] sum = 0 for i in range(5): x = int(input(program[i])) score[i] = x for i in range(5): print('%s成績為%d分'%(program[i],score[i])) for i in range(5): sum += score[i] print('總分',sum) avg = sum/5 print('平均',avg) ``` ***example*** **印出10為底的三角形,如下** ``` *********** ********* ******* ***** *** * ``` ```Python for i in range(10): for j in range(i): print(' ',end="") for j in range(11- 2*i): print('*',end="") print('\n') ``` ### while **有條件限定的** ```Python while 條件: if 條件: continue if 條件: break ``` ```Python num = int(input('請輸入一個數')) while num != 0: print(num % 10) num //= 10 ``` # 字元、字串 字串其實也是序列的一種 也可以把它看成一種容器 * 使用加號(A+B=AB) * 判斷是否相同記憶體使用is * split 和 join >split('分割符',數量) >join可將一個陣列組合成一個字串 ```Python country = 'Taiwan,USA,UK,Japan' list1 = country.split(',',4) for i in range(len(list1)): print(list1[i]) ans = 'xx'.join(list1) print (ans) ``` :::success a024 大數運算 大數運算對python來說是非常簡單的問題 ::: :::spoiler ```python= line=input() a=int(line.split()[0]) fix=line.split()[1] b=int(line.split()[2]) if fix=='+': print(a+b) elif fix=='-': print(a-b) elif fix=='*': print(a*b) else: print(a//b) ``` ::: # 函式 在不同地方但需要使用同一段程式碼時 argument可以預設 若無輸入就會使用預設 ```Python def FunctionName(Argument): 程式碼 return 回傳值 ``` ***最小公因數(GCD)*** **輾轉相除法** 兩個整數的GCD是能夠同時整除它們的最大的正整數。 >原理: >兩個整數的GCD等於較小的數和,兩數的差的最大公因數 ```Python def gcd(a,b): if b == 0: return a else: return gcd(b,a%b) x = int(input('請輸入x:')) y = int(input('請輸入y:')) print('x和y的GCD為',gcd(x,y)) ``` ### 遞迴 這只是基礎的遞迴 ***費氏數列*** ```Python def f(n): if n == 0: return 0 if n <=2: return 1 return f(n-1)+f(n-2) for i in range(11): print(f(i)) ``` # 其他常見操作 |操作|功能| |:----:|:----:| |len(s)|s的長度| |min(s)|s內的最小值| |s.count(x)|x在s裡出現幾次| |s.remove(x)|刪除在s裡第一個x| |s.reverse()|反轉| |s.insert(i,x)|在i的地方插入x| # 加解密 10 base to 2 base ```python= bin(num) ``` 10 base to 16 base ```python= hex(num) ``` 2/16 base to 10 base ```python= int(num,[進位]) ``` ## base64 ```python= import base64 base64.b64encode(s).decode() # 將byte轉str ``` ### 導入模組 ```Python import time import random as rd from apthlib import Path ```