從C到Python
基本輸入與輸出
輸出
C: printf(“Hello World\n”);
P: print(“Hello World\n”)
簡單的字符串輸出對於printf()/print()函數來說,C和Python差別貌似不大,細心的讀者可能會發現,在Python中一條語句後面並沒有分號,事實確實如此,在Python中,一般一行一條語句,如果寫兩條,你需要加上 ; 隔開,但一般沒有人會去那麽做,想一想在C中有多少次都是因為忘添分號導致編譯出錯的,所以在Python中,忘了分號吧。
但是復雜一點的格式輸出,比如打印一定精度的數字或者字符串兩者就不一樣了
C:
#include<stdio.h> int main(){ int a=1; float b =1.0; char str[10]="abc"; printf("a=%d\tb=%.3f\tstr=%s",a,b,str) ; return 0; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
結果應該為a=1 b=1.000 str=abc
P:
b = 1.0
str="abc"
print ("a=%d\tb=%f\tstr=%s" % (a, b,str))
print(‘a={}\tb={}\tstr={}‘.format(a, b,str))
- 1
- 2
- 3
- 4
- 5
結果為
- a=1 b=1.000000 str=abc
- a=1 b=1.0 str=abc
Python中也有類似C語言中的格式輸出,就是把逗號換成%,把變量用圓括號包圍起來。除此之外,還有format方法。
Python中format方法所做的事情便是將每個參數值替換至格式所在的位置。在Python3中數有四種類型:int、float、bool、complex,int表示為長整型,沒有python2 中的 Long,也沒有char類型。
正如你所看到的那樣,Python中的變量不需要聲明,但每個變量在使用前都必須賦值,變量賦值以後該變量才會被創建。這一點與c不同,其他諸如轉義序列\n\t…都差不多。還有一點,在Python中print()函數 默認是以換行符作為結束值的,C語言中printf()函數結束需要手動換行。如果在Python中不想換行,可以在說完正事後添上end = “ “,註意用逗號隔開就行。如:
print(‘a={}\tb={}\tstr={}‘.format(a,b,str),end =‘‘)
print(‘a={}\tb={}\tstr={}‘.format(a,b,str),end =‘‘)
- 1
- 2
結果為 a=1 b=1.0 str=abca=1 b=1.0 str=abc
輸入
C:
#include<stdio.h>
int main()
{
int a=0;
float b=0;
char str[10];
printf("請輸入三個數據,輸入的三個數據將會分別賦值給a,b,str, 用逗號隔開\n");
scanf( "%d%f%s",&a,&b,str);
printf( "%d\t%f\t%s\t ",a,b,str);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
運行結果為:
- 請輸入三個數據,輸入的三個數據將會分別賦值給a,b,str, 用逗號隔開 輸入 :1 2.0 gg 輸出 : 1 2.000000 gg
P:
a,b,str=input("請輸入三個數據,輸入的三個數據將會分別賦值給a,b,str, 用逗號隔開\n").split()
print(‘a={}\tb={}\tstr={}‘.format(a,b,str),end =‘ ‘)
- 1
- 2
- 3
- 4
運行結果為:
- 請輸入三個數據,輸入的三個數據將會分別賦值給a,b,str, 用逗號隔開
- 輸入 :test1 test2.0 22
- 輸出: a=test1 b=test2.0 str=22
input()函數用於從用戶那裏獲得一些文本,有一個用來提示用戶輸入信息的字符串參數,在C語言中,要想實現同樣的功能,需要printf()。當然input只能接受一個值,要想輸入多個,用 input().split(),前面就可以加任意多的數據了。
值得註意的是:input返回的是字符串,雖然看著是數字,但其實是字符串,需要int(input())來進行轉化,如果輸入的不是數字而是字符串,這個轉換就會報錯,在與用戶輸入打交道的地方,要註意檢查類型是否匹配,可以用Try語句,後面再說。
控制流語句
在Python中有三種控制流語 句—— if for和while,下面比較其與C語言中的區別
If
C
#include <stdio.h>
int main()
{
int a=0;
printf("請輸入一個數字\n");
scanf("%d",&a);
if(a==0)
{
printf("a =0");
}
else if(a>0)
{
printf("a>0");
}
else if(a<0)
{
printf("a>0");
}
else
printf("a不是數字 ");
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
p
a=int(input("請輸入一個數字\n"))
if a==0:
print("a =0")
elif a>0:
print("a>0")
else:
print("a<0 ")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
運行結果一樣
- 請輸入一個數字
- 23333
- a>0 條
C中:條件語句後面要用括號包含條件,把條件成立時的語句塊用花括弧{}圍起來,Python中 if 語句後直接接條件再添加冒號,條件成立時執行的語句塊保持縮進一致,一般縮進四個空格或者一個制表符。
但是一定要記住,Python使用縮進級別來告訴編譯器哪些語句分別屬於哪個 塊。如果同一語句塊中縮進不一致,程序結果可能和預想的結果不一樣甚至直接報錯,這便是沒有用花括弧{}所帶來的弊端。
至於else if()簡寫成elif, Python中不存在switch語句。你可以通過使用if..elif..else語句來實現同樣的事 情。
while
while語句在條件為真的前提下重復執行某塊語句
C:
#include <stdio.h>
int main()
{
int a=233,b;
bool flag=1;
printf("猜猜a等於多少,隨便輸入一個數字\n");
scanf("%d",&b);
while(flag)
{
if(a==b)
{
printf("猜對了\n");
flag=0;
}
else
{
if(a>b)
{
printf("有點小了\n");
}
else
{
printf("有點大了\n");
}
printf("繼續猜: ");
scanf("%d",&b);
}
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
P:
a=233
flag=1
b=int(input("猜猜a等於多少,隨便輸入一個數字\n"))
while flag:
if a==b:
print("猜對了")
flag=0
else:
if a>b:
print("有點小了")
else:
print("有點大了")
b=int(input("繼續猜"))
else:
print(‘遊戲結束.‘)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
結果如下
-
猜猜a等於多少, 隨便輸入一個數字 2 有點小了
繼續猜3 有點小了
繼續猜255 有點大了
繼續猜233 猜對了 遊戲結束.
while在C和Python中,區別在於判斷條件的括號()換成冒號:,花括弧{}換成縮進就行了,另外,Python中while可以和else配合使用,else代碼塊在while 循環的條件變為False時開始執行,也可以不用else語句。其他用法差異不大。
for
C:
#include <stdio.h>
int main()
{
int i;
for(i=0;i<10;i++)
{
printf("%d\t",i);
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
P:
for i
in range(0,10,1):
print(i,"\t",end="")
- 1
- 2
- 3
輸出結果如下
- 0 1 2 3 4 5 6 7 8 9
Range()函數的第一個參數指定了起始位置,第二個參數限定了範圍,第三個參數時步長。range()每次會生成一個數字.
In 運算符 如果在指定的序列中找到值返回 True,否則返回 False,因此也可以用在其他條件語句中,測試實例中包含了一系列的成員,包括字符串,列表或元組。至於什麽是列表或這元組,後面介紹。
Python 中的for和與C中的for同Python中的while與C中的while相差不多,都是把C中的括弧()轉為冒號:,把循環體的{}換為一致的縮進即可。
喜歡的朋友可以加QQ群,群內有免費資料供大家一起交流學習
從C到Python