快速起步
準(zhǔn)備
C++是編譯型語言革半,編寫完代碼需要編譯然后運行,而Python是解釋型語言洼怔,可以直接運行署惯;簡單起見,可以在以下兩個網(wǎng)頁進行對比學(xué)習(xí):C++在線編譯運行镣隶;Python3在線運行极谊。
Hello,World!
- C++
#include <cstdio> int main(){ printf("Hello,Cpp!"); }
- Python
print('Hello,Python!')
在C++中诡右,;
代表語句的結(jié)束轻猖,而{
和}
則用來包裹代碼段帆吻,在Python中,換行即可代表語句的結(jié)束咙边,開始的縮進是用來包裹不同的代碼段的猜煮,示例如下:
- C++
if(true){ printf("at first branch!\n"); printf("at first branch!\n"); } else { printf("at second branch!\n"); printf("at second branch!\n"); } printf("Finish!");
- Python
if True: print('at first branch!') print('at first branch!') else: print('at second branch!') print('at second branch!') print('Finish!')
注釋
-
單行注釋
- C++ 中單行注釋以
//
開始,以\n
結(jié)束; - Python 中單行注釋以
#
開始,以\n
結(jié)束败许;
- C++ 中單行注釋以
-
多行注釋
- C++ 中多行注釋以
/*
開始王带,以*/
結(jié)束; - Python 中多行注釋以
'''
開始和結(jié)束檐束;
- C++ 中多行注釋以
基礎(chǔ)類型
Python與C++在類型上不同之處在于C++是靜態(tài)類型辫秧,Python是動態(tài)類型,簡單來講就是被丧,C++常量盟戏、變量聲明都需要指定其是何類型,Python則不需要甥桂。
-
布爾類型
//C++ bool bVal = true; bVal = false;
#Python bVal = True bVal = False
-
整數(shù)類型
C++中的整數(shù)類型比較多柿究,支持8、16黄选、32蝇摸、64位有符號無符號整型的聲明與操作。
//C++ int nVal = 10; long long llVal = 10ll; ...
Python中并沒有這么多區(qū)分:
#Python nVal = 10
-
浮點類型
C++中有單精度浮點數(shù)
float
和雙精度浮點數(shù)double
办陷,其中float
的字面量需要綴f
貌夕。//C++ float fVal = 10.0f; double dVal = 10.0;
Python中沒有單精度浮點數(shù):
#Python fVal = 10.0 dVal = 10.0
-
字符串
C++中的字符串有兩種,一種是字面量民镜,另一種是字符數(shù)組啡专,行為特征為以
\0
結(jié)尾的字符數(shù)組,字面量為常量內(nèi)容無法進行修改制圈,而字符串?dāng)?shù)組如果不是聲明為常量是可以進行修改的们童。//C++ static const char* strVal = "this is a string"; char strVal1[20] = {"this is a string"};
Python中的字符串聲明是常量,無法修改鲸鹦。
#Python strVal = 'this is a string'
-
列表
C++中有
array
慧库、vector
、list
等來表示一組元素馋嗜,其中array
內(nèi)存連續(xù)齐板,大小不變;vector
內(nèi)存連續(xù),大小動態(tài)生長覆积。而Python中的列表操作起來像是
vector
,聲明類似于數(shù)組:#Python squares = [1,4,9,16,25] #聲明 item = squares[0] #元素訪問 squares[1] = 5 #修改元素 squares.append(36) #追加元素 len(squares) #獲取長度 ...
流程控制
-
分支
if/else
C++中的分支操作為
if
听皿、else if
、else
宽档,分別對應(yīng)Python中的if
尉姨、elif
、else
://C++ int x = 0; if(x < 0){ //分支1 } else if(x == 0){ //分支2 } else if(x == 1){ //分支3 } else { //分支4 }
#Python x = int(0) if x < 0: #分支1 elif x==0: #分支2 elif x==1: #分支3 else: #分支4
-
循環(huán)
C++中循環(huán)的一種寫法為
for(初始操作;循環(huán)條件;中間處理)
,而Python中對應(yīng)循環(huán)的寫法為for 值 in 可迭代對象:
;還有C++中的while(循環(huán)條件)
吗冤,Python中對應(yīng)寫法為while 條件:
://C++ for(auto i = 0 ; i < 10 ; i ++){ printf("%d",i); } int i = 0; while( i < 10) { printf("%d",i); i++; }
#Python numbers = [0,1,2,3,4,5,6,7,8] for i in numbers: print(i) i = 0 while i < 10: print(i) i = i+1
-
跳轉(zhuǎn)
C++中可以使用
break
來跳出本次循環(huán),使用continue
來直接執(zhí)行循環(huán)中的下一次操作又厉,在Python中使用方法一樣,不一樣之處在于可以使用else
來在循環(huán)判定條件不滿足時執(zhí)行相應(yīng)操作椎瘟。//C++ for(auto n = 2; n < 10; n++ ){ bool bVal = false; for(auto x = 2; x < n ; x++){ if(n %x == 0){ printf("%d equals %d*%d\n",n,x,n/x); bVal = true; break; } } if(!bVal) printf("%d is a prime number\n",n); }
#Python for n in range(2,10): for x in range(2,n): if n % x == 0: print(n,'equal',x,'*',n//x); break else: print(n,'is a prime number')
標(biāo)準(zhǔn)輸入輸出
-
標(biāo)準(zhǔn)輸出
C中標(biāo)準(zhǔn)輸出指的是
stdout
覆致,即命令行輸出,還有stderr
是錯誤信息的輸出流,有相關(guān)的函數(shù)族來完成相應(yīng)操作://C putchar('\n');//無格式輸出 printf("%d",10);//格式化輸出 printf("%s is %d","the value ",100);//可變參數(shù)輸入
C++中對標(biāo)準(zhǔn)輸出的定義為
std::cout
:std::cout<<'\n'; std::cout<<10; std::cout<<"the value is "<<100;
Python中使用
print
向標(biāo)準(zhǔn)輸出輸出信息:#Python print() print(10) print('the value is',100)
-
標(biāo)準(zhǔn)輸入
C中標(biāo)準(zhǔn)輸入指的是
stdin
,從命令行接收輸入信息://C auto ch = getchar(); int nVal = 0; scanf("%d",&nVal);
C++中對標(biāo)準(zhǔn)輸出定義為
std::cin
://C++ int nVal = 0; std::cin>>nVal;
Python中使用
input
來從命令行接收輸入信息:#Python strVal = input() nVal = int(input('Please enter an integer:'))
函數(shù)
C++中函數(shù)聲明一般在頭文件中供別的模塊使用肺蔚,然后在源文件中實現(xiàn)煌妈,譬如計算斐波那契數(shù)列的函數(shù):
```
//C++
//fibonacci.h
int fibonacci(int nVal);
//fibonacci.cpp
int fibonacci(int nVal){
assert(nVal >= 0);
if(nVal == 0)
return 0;
if(nVal == 1)
return 1;
return fibonacci(nVal-1)+fibonacci(nVal-2);
}
//demo.cpp
#include "fibonacci.h"
int main(){
auto nVal = fibonacci(10);
return 0;
}
```
在Python中函數(shù)聲明及實現(xiàn)如下:
```
#Python
#fib.py
def fib(n):
a,b = 0,1
while a<n:
a,b = b,a+b
return b
#當(dāng)前文件使用
fib(10)
#其它文件使用
from fib import fib
fib(10)
```