# python v.s. C++ ###### tags: `code` :::danger ### 變數宣告 ::: :::info * **C++** *type: int(實數) double、float(浮點數) char(字元) bool(布林值)* * **python** *系統自動初步判斷,若有需求需自動轉型* ::: :::spoiler **C++** ::: success **<C++>** ```C++= int x; double y=0; float z,z1; char a,b,c; bool k=true; ``` ::: :::spoiler **python** :::info ```python= x=150 #自動判別int (有時會判成char) y=z=151.5 #float T=True #bool A='a' #char ``` **p.s. python 只有float 沒有double** ::: --- :::danger ### 轉型 ::: :::info 相同的資料型別才能做運算 ::: :::warning ## **%格式化** * **%d => int** * **%f => float** * **%x => 16進制** * **%X => 16進制(大寫)** * **%o => 8進制** * **%s => 字串** * **%e => 科學記號e輸出** * **%E => 科學記號E輸出** ::: :::spoiler **C++** :::success **<C++>** ```c++= int i='a'; std::cout<<a<<std::endl; std::cout<<static_cast<int>(a)<<std::endl; ``` * 四捨五入法 ```C++= //利用有效數字的方法達成 #include<iomanip> double PI=3.141592653; cout<<setprecision(5)<<PI<<endl; 取到5位 ``` ::: :::spoiler **python** :::info **<python>** ```python= i='a' print(str(i)) ``` * 備註:利用type()能確認變數的型別 --- ```python= i='a' print(type(i)) ``` >> <class 'str'> --- * 轉型彙總 ```python= i=150 j=3.1415926 k='a' print(int(j)) #浮點數 -> 整數 print(float(i)) #整數 -> 浮點數 print(ord(j)) #字元 -> UNICODE print(char(32)) #ASCII -> 字元 ``` * float->int ==**無條件捨去**== --- * round()指令: ```python= i=3.1515926 round(i,2) #i四捨五入法到小數點後第2位 ``` ::: --- :::danger ### 四則運算 ::: :::info **特殊語法:** **i+=2 => i=i+2** **i-=2 => i=i-2** **...依此類推** :::danger * **%為取餘數的意思** * **在C++語法中存在i ++,在python中,必須輸入i += 1** ::: :::spoiler **C++** :::success ```c++= int a=5; int b=10; int c=(a*b)*10; cout<<c<<endl; ::: :::spoiler **python** :::info ```python= a=10 b=15 c = (a + b) / b print(c) ``` ::: --- :::danger ### **IF 關係式** ::: :::info * ==**= 的觀念是把值丟入; ==是做比較喔~:bangbang:**== :::warning * **> 大於** * **< 小於** * **<= 小於/等於** * **>= 大於/等於** * **== 等於** ==**非常重要:bangbang:**== ::: :::spoiler **C++** :::success ```C++= int a=4; int b=5; if(a<b) { cout<<"1"<<endl; } else_if(a>b) { cout<<"2"<<endl; } else { cout<<"equal"<<endl } ``` ::: :::spoiler **python** :::info ```python a=4 b=5 if(a>b): print("1") elif(a<b): print("2") else: print("equal") ``` ::: --- :::danger ### 輸入及輸出 ::: :::info * **C++中具有列印及==掃描==的觀念** * **python 只具有寫入的元素** ::: :::spoiler **C++** :::success ```C++= int a; //宣告變數 cout<<"輸入變數="; //輸出詢問 cin>>a; //輸入寫入 ``` * **利用cin及cout達成==寫入==及==輸入==的功能** * **:bangbang:cout是 ==<== ; cin是 ==>==** ::: :::spoiler **python** :::info ```python= i=input("輸入變數") print(int(i)) ``` ::: --- :::danger ### 邏輯運算子 ::: :::info * **具有AND、OR、NOT** ::: :::spoiler **C++** :::success * AND => && * O R => || * NOT => ! ```C++= int a; if(a>5 ||b<=-20) { cout<<"hello world!" } else_if(a<4 && a!=0) { cout<<"crying world?" } else_if(a==0) { cout<<"歸剛ㄟ!" } ``` ::: :::spoiler **python** :::info :bangbang: **python中沒有&&、||,要用英文輸入** ```python= a=input("a=") b=input("b=") if(int(a)>5) or (int(b)<=-20): { print("hello world!") } elif(int(a)<4) and (int(a)!=0): { print("crying world?") } elif(int(a)==0): { print("歸剛ㄟ!") } ``` ::: --- :::danger ### 運算元素(進階) ::: :::info **次方運算** ::: :::spoiler **C++** :::success ```c++= #include<cmath> int i=5; int y=pow(i,3); int z=sqrt(i) cout<<"y="<<y<<endl; cout<<"z="<<z<<endl; ``` ::: :::spoiler **python** :::info ```python= i=5 print(i**3) print(i**0.5) ``` ::: --- :::info **亂數** ::: :::spoiler **C++** :::success ```C++= #include<ctime> srand(time(NULL)); int i=1+rand()%(10-1+1); ``` * :bangbang:==**下限+rand()%(上限-下限+1)**== ::: :::spoiler **python** :::info ```python= import random import string i=random.randint(1,50) ``` * ==**rand(下限,上限)**== ::: --- :::danger ### 串列 ::: :::info * **具有一個變數有很多值的功能** ::: :::spoiler **C++** :::success ```C++= int i[5]; //宣告五格串列 int j=[2,3,4,5,6]; //設定變數內容 ``` ::: :::spoiler **python** :::info * **串列性質辨別** ```python= i=[2,3,2,4,5,7] print("1~3筆資料",i[0:2]) #輸出多個數值 print("最後一筆資料",i[-1]) #最後一筆i[-1] print("最後第二筆資料",i[-2]) #最後第二筆i[-2] print("最大=",max(i[0:5])) #最大的max(i[0:5]) print("最小=",min(i[0:5])) #最大的min(i[0:5]) print("總和=",sum(i[0:5])) #最大的sum(i[0:5]) print("資料數",len(i)) #資料數len(i) ``` * **len(i)可用來判斷空串列** --- * **更改串列** ```python= i=[3,6,4,8,2] i[3]=0 print("修改後",i) ``` --- * **串列加法** ```python= num1=[3,2,1] num2=[1,2,3] print(num1+num2) #>>[3,2,1,1,2,3] print(num1[1]+num2[1],num1[2]+num2[2],// //num1[3]+num2[3]) #>>3,3,3 ``` --- * **刪除串列** ```python= num=[6,9,5,1,3,7,26,4] del num[0] print("刪除第1項",num) num1=[6,9,5,1,3,7,26,4] del num1[0:2] print("刪除前2項",num1) num2=[6,9,5,1,3,7] del num2[0:6:2] print("間格刪除",num2) #[start,end,step] num3=[6,9,5,1,3,7] del num3 ``` --- * **打包** ```python= a,b,*c=1,5,6,3,4,8 print(a,b,c) a,*b,c=2,6,3,5,9,7,45 print(a,b,c) ``` **>>1 5 [6, 3, 4, 8]** **>>2 [6, 3, 5, 9, 7] 45** ::: --- :::danger ### 字串物件導向 ::: :::spoiler **python** :::info * **大小寫轉換** ```python= x='ABC' y='abc' z='AbCd' print(x.lower()) #全轉小寫 print(y.upper()) #全轉大寫 print(y.title()) #首字轉大寫 print(z.swapcase()) #大寫轉小寫;小寫轉大寫 ``` --- * **刪除空白元素** ```python= x=' abc' y='abc ' z=' abc ' print(x.lstrip()) print(y.rstrip()) print(z.strip()) ``` --- * **字串對齊** ```python= string="abc" print("/%s/" % string.center(10)) #10:長度空間(置中) print("/%s/" % string.ljust(10)) #10:長度空間(置左) print("/%s/" % string.rjust(10)) #10:長度空間(置右) print("/%s/" % string.zfill(10)) #10:長度空間(前方空缺補0) ``` --- * **字元增加(上篇章)** ```python= car=[] print(car) #>>[] car.append('Honda') print(car) #>>[Handa] car.append('Porche') print(car) #>>['Honda', 'Porche'] car.insert(1,'Bugatti') #插入 print(car) #>>['Honda', 'Bugatti', 'Porche' ] ``` * **(下篇)** ```python= car=['Honda','Porche','Nissan','Audi'] car2=['Bugatti','BMW','Maserati'] car.append(car2) print(car) print(car2) ``` * **延接** ```python= car=['Honda','Porche','Nissan','Audi'] car1=['Bugatti','BMW','Maserati'] car.extend(car1) print(car) ``` --- * **刪除串列** ```python= car=['Honda', 'Bugatti', 'Porche', 'Volvo'] car_pop=car.pop() print(car_pop) #刪除項:Volvo print(car) #刪除後的串列['Honda','Bugatti','Porche'] car_popp=car.pop(2) print(car) #['Honda','Bugatti'] expensive='Bugatti' carpop = car.remove(expensive) #['Honda'] print(car) ``` --- * **顛倒排序** ```python= car=['Honda', 'Bugatti', 'Porche', 'Volvo'] car.reverse() #顛倒動作 print(car) ``` --- * **排序** ```python= car=['Honda', 'Bugatti', 'Porche', 'Volvo'] car.sort(reverse=True) #字母大排到小 print(car) Num=Num2=[1,5,9,4,3,7] Num.sort(reverse=False) Num2.sort(reverse=True) print(Num,Num2) ``` --- * **搜索** ```python= car=['Honda', 'Bugatti', 'Porche', 'Volvo'] Num=[1,5,3,7,4,9,2,6,48,8] search_str='Bugatti' i=car.index(search_str) search1_str=48 j=Num.index(search1_str) print(f"{search_str},{i+1}") print(f"{search1_str},{j+1}") ``` * ==**:bangbang:數字搜索記得不要加''**== --- * **計數** ```python= car=['Honda', 'Bugatti', 'Porche','Honda', 'Volvo'] search_str='Honda' num=car.count(search_str) print(f"{search_str},{num}") ``` --- * **串列內的串列** ```python= num=[1,5,9,6,3,[6,7,3]] print(num[5][2]) ``` * **二維串列** ```python= sc=[ ['JAMES',60,80,99,0], ['PETER',90,50,66,0] ] sc[0][4]=sum(sc[0][1:4]) sc[1][4]=sum(sc[1][1:4]) print(sc[0]) print(sc[1]) ``` --- * **id位址** ```python= num=[1,5,9,6,3,[6,7,3]] print(id(num)) ``` --- * **字串切片** ```python= string="ineedagirlfriend!" print(string[0]) print(string[1:5]) print(string[5]) print(string[6:10]) print(string[10:16]) print(string[16]) ``` ::: --- :::danger ### 迴圈(loop) ::: :::success * **for** ::: :::spoiler **C++** :::success ```C++= int sum=0; for(int i=0;i<=100;i++) { sum+=i; } ``` * **簡單的1加到100** ::: :::spoiler **python** :::info * **串列輸出** ```python= car=['Audi','Bugatti','Cadillac','Nissan'] for cars in car: print (cars) ``` --- ```python= sum=0 for i in range(1,101): #加到第100項(1,100+1) sum = sum + i print(sum) ``` ```python= for i in range(10,101): #從10印到100 print(i) ``` * **:bangbang:記得加到第100項(1,100+1)** ::: ---