Python自學.ppt

Download Report

Transcript Python自學.ppt

1
Google App Engine
支援之程式語言比較
Java, Python, Go
2
本章節將透過以下項目來比較
Java, Python, Go的差異
• (一) 簡介
• 1.1定義比較
• 1.2轉譯
• 1.3程式設計類型
• (三) 結構
• 3.1判斷結構
• 3.2迴圈結構─for
• 3.3迴圈結構─while
• (二) 語法
• 2.1縮排與註解
• 2.2輸出 “Hello World”
• 2.3使用者輸入視窗
• 2.4數值與其運算
• (四) Python名詞比較
• List
• Slice
• Dictionary
3
(一) 簡介
• 1.1定義比較
• 1.2轉譯
• 1.3程式設計類型
4
1.1 定義比較
1. Go是Google開發的一種編譯型,平行運算,並
具有垃圾回收功能的程式語言。
2. Python(英語發音:/ˈpɑɪθ(ə)n/),是一種物件
導向、直譯式電腦程式語言
3. Java是一種電腦程式設計語言,擁有跨平台、物
件導向、泛型程式設計的特性。
5
1.2 轉譯
• 意義:高階語言成為目的程式(機器語言寫成)的過程稱之
• 種類:
• 編譯:利用編譯器將整個原始程式轉譯為目的程式
• 直譯:利用直譯器一次將一個指令轉譯為目的指令並執行,持續執
行直到結束或執行發生錯誤,發生錯誤就中斷並顯示錯誤訊息
• 比較:
• Java:先 編譯(編譯成位元組碼) 後 直譯(位元組
碼安裝Java virtual machine模擬器的電腦進行
編譯或直譯) 後執行
• Python:直譯
• Go:編譯
6
1.3 程式設計類型
• 種類:
• 程序式類型 (Procedural paradigm):資料與操作 綁在一起 (資料先
存放到記憶體內 被程式呼叫) 如:C、BASIC、FORTRAN…等
• 物件導向式類型 (Object-oriented paradigm) :資料與操作 是分開的
,如:Visual Basic、C++…等
• 函數式 (Functional paradigm):程式是由數學函數所組成的,如:
LISP…等
• 宣告式 (Declarative paradigm):利用邏輯推論來回覆查詢,如:
Prolog
• 比較:
• Java:物件導向式語言
• Python:物件導向式語言
• Go:程序式類型(????)
7
(二) 語法
• 2.1縮排與註解
• 2.2輸出 “Hello World”
• 2.3使用者輸入視窗
• 2.4數值與運算
8
2.1縮排與註解
• 縮排
• Python 強制縮排 Java則沒有
• Python開發者有意讓違反了縮進規則的程序不能通過編
譯,以此來強制程序員養成良好的編程習慣。
• 註解
單行註解
多行註解
JAVA
//
/*
Python
#
”””
*/
”””
9
2.2輸出 “Hello World”
程式語言
Java
Python
Go
程式碼
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
print “Hello World"
package hello
import (
"fmt"
"net/http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, world!")
/* Output-------}
Hello World
---------------*/
10
2.3使用者輸入視窗
程式語言 程式碼
Java
Python
import java.util.Scanner;
public class Bonjour {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scn=new Scanner(System.in);
String name;
System.out.print("What\'s your name?");
name=scn.nextLine();
System.out.println("Bonjour!,"+name);
}
}
print "Hello! What's your name?"
name = raw_input()
/* Output-------------print "Bonjour!", name
What’s your name? kent
Bonjour!,kent
----------------------*/
11
2.4數值與運算
• 不同處:
• Python在數值上一個很大的優勢就是,整數基本上是沒有限制位數
• 相同處:
• 符點數也可以用科學表示法來表示,例如 : 1.23e007(1.23E-7)、1e+017 (1.0E17) 。
• 符號運算:+(加法), –(減法), *(乘法), /(除法), %(取餘數)
• int 具有無條件捨去法的特性
• 範例:以下這題程式的執行結果是甚麼?
int i=10/6;
System.out.println(i);
• 型態轉換:不同型態的運算中,輸出型態會強制轉為較複
雜的型態 (範例如下一頁)
12
型態轉換範例
程式語言 程式碼
Java
public class DataTypeChange {
Python
public static void main(String[] args) {
int a=100;
int b=30;
double c=40.0;
System.out.println(a/c);
System.out.println(a/b);
System.out.println((float)a/b);
System.out.println(a/(float)b);
System.out.println((float)a/(float)b);
}
}
/*OUTPUT---NumberA = 100
2.5
NumberB = 30
3
print NumberA / NumberB
3.3333333
print float(NumberA) / NumberB
3.3333333
print NumberA / float(NumberB)
3.3333333
print float(NumberA) / float(NumberB)
-----------/*
13
(三) 語法
• 3.1判斷結構
• 3.2迴圈結構─for
• 3.3迴圈結構─while
14
3.1判斷結構
• Ex.設立一變數t,依據範圍決定輸出內容:
t
t>15
4<t<15
t=4
t<4
Output
今天溫度還算好
有點冷
夭壽喔,四度出去一定死的
冷死了,不想出門寧願待在家裡
15
程式語言
程式碼
Java
public class temperature {
public static void main(String[] args) {
int t=4; //變數宣告為int
if(t<4){
System.out.print("冷死了,不想出門");
System.out.print("寧願待在家裡");
}
else if((t>4)&&(t<15))
System.out.print("有點冷");
else if(t==4)
System.out.print("夭壽喔,四度出去一定死的");
else
System.out.print("今天溫度還算好");
}
}
#u Unicode String
t=4
if t < 4:
print u"冷死了,不想出門"
print u"寧願躲在家裡"
elif t > 4 and t < 15:
print u"有點冷"
elif t == 4:
/*OUTPUT-----------print u"夭壽喔,四度出去一定死的"
夭壽喔,四度出去一定死的
else:
------------------/*
print u"今天溫度還算好"
Python
16
3.2迴圈結構─for
• Ex. 1+2+3…+100=?
程式語言 程式碼
Java
public class SumOf1To100 {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=100;i++)
sum+=i;
System.out.println("1+2+3+...+100=" + sum);
}
Python
}
sum = 0
for x in range(1, 101, 1):
sum += x
print '1 + 2 + 3 + ... + 100 =', sum
/*OUTPUT-------1+2+3+…+100=5050
---------------/*
17
3.3迴圈結構─while
• Ex.請印出0~9
程式語言 程式碼
public class SumOf1To100 {
Java
public static void main(String[] args) {
int i=0;
while(i<10){
System.out.println(i);
i++;
}
}
}
Python i = 0
while i < 10:
print i
i += 1
/*OUTPUT-0
1
2
3
4
5
6
7
8
9
--------/*
18
(四) Python名詞比較
• 串列(List):相當於「陣列」的概念
例如:studentList = ['John', 'Merry', 'Tom', 'Victor']
例如:印出第一個學生則打入:print studentList[0]
• 切片(Slice):相當於「取字串」的觀念
例如:
s=”12345678”
print(s[2:5:2]) #Ans: 35
• 字典(Dictionary):相當於「對應」的觀念
例如:
friendMap = {'John': 'My classmate', 'Tom': 'Who he is?', '1
900': 'A great pianist'}
則輸入John時,就會輸出My classmate