Python基礎語法

THU - Advanced Smart Technology Application and Research Center

Python基礎語法

Table of Contents (click to jump!)

基本介紹

Python是一種廣泛使用的高階程式語言(High-level programming language),強調程式碼的可讀性(readability)和簡潔,並且相容於世界上大部分的作業系統(Linux,UNIX,Windows,MacOS…)。它的原始碼是免費、開源(open source),你可以按自己喜好變更Python程式碼。

環境設置

以我自己來說,我使用Python軟體機機會(Python Software Foundation)提供的軟體,可至這邊下載。

Python Software Foundation(click to go!)

下載完後可以看到這四個東西,由上而下分別是 :

  • GUI的殼層指令介面
  • 純文字指令介面
  • Python使用手冊
  • Python模組介紹

編輯方式有很多種,可以使用記事本、Notepad++…文字編輯器編輯,只要存檔的附檔名是”.py”即可,例如”HelloWorld.py”。

要執行的話可以使用第一個工具”GUI的殼層指令介面”。


 點開後可以見到此畫面,按右上角”File”

按選單內的”Open…”

選擇檔案(helloworld.py)

在文字區即可編輯程式碼,執行的話按”Run\Run Module”

在殼層指令區就會看到執行結果,此處”>>>”也可以直接打上程式碼,按”Enter”即執行

Python的使用與C++

變數(variable)

基礎知識

在C++、JAVA…語言中,變數的資料型態(Data Type)是需要再宣告的時候加上”int(整數)”、”char(字元)”、”float(浮點數)”…例如 :

int a=8;
//給予變數"a" 整數'8'

float b=4.231;
//給予變數"b" 浮點數'4.231'

char c='H';
//給予變數"c" 字元'c'

string d='Helloworld';
//給予變數"d" 字串'Helloworld'
//(需加入"string.h"函式庫)

在Python中,變數的資料型態只取決於你宣告的時候給它的值

例如:

e=8
#給予變數"e" 整數'8'

f=4.231
#給予變數"f" 浮點數'4.231'

g='H'
#給予變數"g" 字元'H'

h='Helloworld'
#給予變數"h" 字串'Helloworld'
#字串可以用單引號或是雙引號包夾
#(詳見附註1)

i=3192; j='pwbeefnoodles'
#給予變數"i" 整數'3192'
#以及變數"j" 字串'pwbeefnoodles'
#(詳見附註2)

附註1:
在Python中,字串可以相加,例如:

print("A"+"bcdef")
#輸出: Abcdef

附註2: 在Python中,分號的功用是用在同意行不同之敘述(statement)分隔,如果有換行的話,末端分號可加可不加。如果兩個不同的敘述(statement)出現在同一行的話,執行時會出現”SyntaxError: invalid syntax(語法錯誤)”錯誤

資料型態查詢函數(type())

type()函數是拿來查詢小括號內東西的資料型態,例如(使用殼層指令):

e=8
f=4.231
g='H'
h='Helloworld'
type(e)
class 'int'="";
type(f)
class 'float'="";
type(g)
class 'str'="";
type(h)
class 'str'="";

”雙單引號內的東西即是輸出

註解(comment)

註解是方便自己或是其他人閱讀的一段句子,用於解釋敘述或是暫時取消某些敘述的功能;在C當中我們使用 “//註解這段” 雙斜線(註解單行) 或是 “/* 註解範圍 */” 斜線星號(註解一段),例如:

int a=90; //令a等於90
/*這堆字
也算註解
*/

而在Python中,註解使用 “#” 井字號(註解單行) 或是 “[“””註解範圍”””]” 兩組三個雙引號包住之區域。 

注意! 三個雙引號這種可以塞註解在裡面,也可以是字串,詳見範例:

print('Hello World');
#4185165
"""abcedfg"""
a="""qwert"""
print(a)

#輸出:
Hello World
qwert
>>>

在此範例中,第二行和第三行因為是註解所以沒有顯示出來;而第四行因為有將那串東西賦予變數”a”,所以編譯器將它視為字串,所以可以用print將變數a列印出來!

列印函數print()

print()基礎使用

在c++中,要列印東西在螢幕上使用printf()函數,例如: 

printf(變數名稱,資料型態);
printf("字串");
//範例:
int a=128;
printf("Variable a= %d",a);

輸出: Variable a= 128

而在Python中,我們使用:

print(變數名稱)
print("字串")
//範例:
b=128
print("Variable b= ",b)

輸出: Variable b= 128

在Python中,不同東西要用”逗號”分隔開來,以上述例子中,”Variable b=”是字串,”b”是變數,所以在列印的時候要用逗號分隔開來

print參數

  • sep: 用來分隔,預設是空格
  • end: 用來設定結尾,預設是\n (換行)
print("abc""def")
#輸出: abcdef

print("abc","def")
#輸出: abc,def

print("abc","def",sep="-")
#輸出:abc-def

print("abc","def",sep="-",end="")
#輸出(不換行): abc-def [下一行輸入區]

print("abc","def",sep="-",end="\n\n")
#輸出(印完"abc-def"之後再換1行):
abc-def

輸入函數input()

在C++中,若要使用者輸入資料,通常使用scanf()、getchar()…例如: 

int a;
scanf("%d",&a);
printf("a=%d",a);

在Python中我們使用input()函數,例如:

變數名稱=input("欲顯示的文字")

a=input("Enter a number:")
print("a=",a)
#執行結果:
Enter a number:
#輸入: 123456
#輸出: a=123456

b=input("Enter a string:")
print("b=",b)
#執行結果:
Enter a string:
#輸入: "Hello!"
#輸出: b=Hello

num=int(input('Enter a number:'))
#輸入為整數int(input())
#if-else條件判斷句詳見文章下方
if num%2 == 0:
print(num," is even")
else:
print(num," is odd")
#執行結果:
Enter a number:
#輸入: 23123
#輸出: 23123 is odd

num=float(input('Enter a float:'))
#輸入為浮點數float(input())
#if-else條件判斷句詳見文章下方
if num%2 == 0:
print(num," is even")
else:
print(num," is odd")
#執行結果:
Enter a number:
#輸入: 12.3
#輸出: 12.3 is even

注意!Python3的input函數輸入的值會變成字串,無法進行數學運算或是判斷,如果想將之轉換為整數時,要在input外面加上int()函數,變成這樣:int(input(“Enter a number:”)),這樣存入變數的值就會是整數了,浮點數則使用float()。另外,輸入字串時一定要加上單引號或是雙引號,不然它會誤以為是變數名稱而出錯!

運算邏輯與是非判斷

計算運算子

在Python中的運算元與是非判斷跟C++一樣,唯有次方運算元不同!
例如在c語言中:

printf("%d",2+3);
//相加 輸出: 5

printf("%d",154-4);
//相減 輸出: 150

printf("%d",6*7);
//相乘 輸出: 42

printf("%d",9/2);
//相除 輸出: 4

printf("%d",159%4);
//取餘數 輸出: 3

int a=pow(2,12);
printf("%d",a);
//冪次方 輸出(需加入函式庫"math.h"): 4096

int a=pow(4096,0.5);
//0.5次方(可修改)
int a=sqrt(4096,0.5);
//平方根
printf("%d",a);
//根號 輸出(需加入函式庫"math.h"): 64

至於在Python中,除了次方或是根號之處不同之外,其餘皆相同:

print(2+3)
#相加 輸出: 5

print(154-4)
#相減 輸出: 150

print(6*7)
#相乘 輸出: 42

print(9/2)
#相除 輸出: 4

print(159%4)
#取餘數 輸出: 3

printf(2**12);
#冪次方 輸出: 4096

printf(4096**0.5);
#開0.5次方(平方根) 輸出: 64

是非判斷

是非判斷在C++或是Python中是相同的

關係運算子使用意思
<A < BA小於B
>A > BA大於B
<=A <= BA小於等於B
>=A >= BA大於等於B
==A == BA等於B
!=A != BA不等於B

範例(Python):

print(3>2)
//輸出: True

print(3<2)
//輸出: False

print(3==3)
//輸出: True

print(3!=2)
//相加 輸出: True

邏輯運算子

在Python中,邏輯運算子都使用”單字”取代符號,請見下表:

C++邏輯運算子Python邏輯運算子使用意思
&andA and BA和B
|orA or BA或B
~notnot A非A

注意! 這裡的三個邏輯是bit-wise運算,也就是0以外的是數字都視為1!

範例(Python):

print(not 5)
#輸出: False

print(not 0)
#輸出: True

print(not -5)
#輸出: False

print(0 and 0)
#輸出: 0

print(0 and 1)
#輸出: 0

print(1 and 1)
#輸出: 1

print(1 or 1)
#輸出: 1

print(1 or 0)
#輸出: 1

print(0 or 0)
#輸出: 0

print(6 or 1)
#輸出: 6

print(6 or 7)
#輸出: 6

print(6 and 7)
#輸出: 7

print(6 and 1)
#輸出: 1

if-else條件判斷句

if-else條件判斷句是任何語法、任何程式的關鍵角色;在C++中,if-else要使用大括號包起敘述主體,例如:

if(a&gt;0){
printf("a is bigger than 0!");
}
else {
printf("a is smaller than 0!");
}

至於在Python中我們使用 if(條件): [欲執行敘述];

if的小括號可加可不加!而else if在Python中是elif

if(a>0):
printf("a is bigger than 0!")
elif a<0:
printf("a is smaller than 0!")
else:
printf("a is 0!")

迴圈(loop)

for迴圈

在C++裡面的for迴圈語法是這樣: for(初始值;條件;變數值更動){執行敘述}

for(int i=0;i<4;i++){
printf("%d ",i);
}
//輸出:0 1 2 3

在Python中,沒有變數值更動這個部分,要先宣告一個集合物件

numlst=[1,2,3]
#宣告串列numlst=[1,2,3]
for i in numlst:
print(i)
#輸出: 1 2 3

while迴圈

相較於for迴圈,while迴圈在Python中沒甚麼太大的更動,先來看看C++當中的while迴圈:

int a=0;
while (a&gt;4){
printf("%d ",a);
a++;
}
//輸出:0 1 2 3

再來看看Python這邊:

b=0;
while b&gt;4:
print("b= ",b)
b+=1
else:
print ("End!")
#輸出:0 1 2 3

最後面的else可加可不加,目的是在迴圈結束後再丟一個東西出來

注意!Python中沒有i++這個自肥公式,要自肥請使用i=i+1或是縮寫i+=1

zh_TWChinese