從Python看C語言(基礎語法篇)

 一個學過C/C++的老油條,最近學起了Python,不得不說,知識還是老知識,語法也簡單多了,但就是容易搞混。大致總結一下Python與C的區別,以後別張冠李戴啦,嘻嘻。

Part  1.輸入與輸出

輸入任意類型的數據,python用的是input();而C語言對於整型、實型、字符(串)型數據,都可以用scanf。整型/實型scanf(“%d/f”,&x),要加引用符號“&”,而字符串不必加引用符號:scanf("%s",x)。對於(單一)字符型數據,用getchar()輸入;對於字符串,除了scanf輸入,還可以用gets()輸入。

輸出最常用的非print莫屬啦(C語言爲printf),但首先值得注意的是print自帶換行功能,即print('xxx')等效於C語言中的printf("xxx\n"),當然,print中的單引號換成雙引號也可以,但兩種引號不能混搭(一邊單引號,一邊雙引號)。Python中,不想換行怎麼辦?那就加上end=''關鍵字參數,即print('xxx',end='')等效於C語言中的printf("xxx")。對於具體的輸出,與輸入一樣,C語言需要關鍵字%d、%s等等,而Python不必寫這些形態符號,不同形態的輸出也就更方便啦。C語言:printf("output:%d\n",x);Python:print('output:'+str(x));對於整型、實型數據的輸出,如果伴隨字符串,則要使用str()以字符形態輸出,畢竟,字符型數據太傲嬌,不願與整型、實型數據爲伍,後者不得不裝扮成字符型數據呀。

Part 2.邏輯值

C++特有的bool型數據在Python當中會是怎樣的呢?在絕大多數IDE中,C++的bool值是true和false,不能大寫;而在Python中,True與False首字母要大寫,其他邏輯含義不變,True仍代表1或非0整數,False仍爲0。

在交互式環境中,“in”與“not in"語句可以判斷某元素是否屬於某一數組(列表),比如:列表spam=[1,2,3],我們判斷3在不在裏面,輸入3 in spam,會返回結果:True;若是3 not in spam,則返回的判斷結果爲False,列表的具體內容我們會在之後講解。

None值表示沒有值,像print()這樣的函數不會返回任何值,那麼None就是它的返回值。

在Python中,and、or、not更加直白的表示了與、或、非,在C/C++中,它們分別是&&、||、!。如判斷句:

Python版本:(2<3) and (4<5) or not (5==6)

C/C++版本:(2<3) && (4<5) || !(5==6)

其實,在基礎語法中,C與Python最明顯的區別還是——";"。Python的語句不用分號結尾!!!

Part 3.條件&循環語句

條件語句:

//C語言:
if(條件1){
語句內容;
}
else if(條件2){
語句內容;
}
else{
語句內容;
}

#Python語言: 
if 條件1:
  語句內容#要縮進
elif 條件2:
  語句內容#要縮進
else:
  語句內容#要縮進

while語句:

//C語言:
while(循環條件){
語句內容;
};

#Python語言:
while 循環條件:
   語句內容#要縮進

for語句:

//C語言:
for(i=0;i<10;i=i+2){
語句內容;
}

#Python語言:
for i in range(0,10,2):
   語句內容//要縮進

對於終止循環的continue與break,在兩種語言中功能相同,不過Python中不必加上分號。

Part 4.導入與終止

導入某種功能(數學公式、排序函數等)時,C語言直接在頭文件引用對應功能:#include<xxx.h>,如果是導入自己寫的頭文件,

則爲#include"xxx.h";Python則使用import關鍵字導入,如import random,也可以寫爲from random import*,後者在調用random模塊時就不需要random.前綴了,不過爲了使名稱完整,最好使用前者的寫法。

Python可以導入sys模塊,使用sys.exit()函數終止程序運行;也可以按Ctrl+C強行終止程序。

C++中可以通過引入stdlib.h頭文件,使用system("pause")實現程序的暫停;Python可以是使用input()語句實現程序的暫停。

Part 5.全局變量

在C/C++中,我們會用define或const語句進行全局定義,而在Python中,使用global語句定義。

Part 6.函數

C語言要寫明函數類型int/char/void等,而形參也要標明類型。對於Python,函數定義爲"def xxx():",形參也無需標明類型。

Part 7.代碼實戰

最後,舉個栗子對上述內容做個總結吧:

Python版本:

def collatz(number):
    if not(number%2):
        number=number//2
        return number
    else:
        number=number*3+1
        return number
print("請輸入一個整數:",end='')
num=int(input())#input默認輸入字符型數據,輸整數,則需用int()包含
while num !=1:
    num=collatz(num)
    print(num)
    
    

運行結果:

 

C版本:

#include<stdio.h>
int collatz(int number){//要指明函數本身形態int以及形參的形態int 
	if(!(number%2)){ 
	number/=2;//number爲int型,得到結果均會轉爲整型,相當於整除 
	return number;
	}
	else{number=3*number+1;
	return number;
	}
}
int main(){
	int num;
	printf("請輸入一個整數:");//python的print自帶換行功能,如果不想換行,則要加上end=''關鍵字 
	scanf("%d",&num);//整型、實型數據用scanf輸入,分別對應%d和%f/%lf 
	while(num!=1){
		num=collatz(num);
		printf("%d\n",num);//輸出也要指明輸出數據的形態 
	}
	return 0;
} 

運行結果:

感謝耐心觀看,如有錯誤,歡迎指正。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章