1. 程式人生 > >從C到Python

從C到Python

while 循環 空格 可能 其他 檢查 function split 導致 print

基本輸入與輸出
輸出
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