Python_01

Similar documents
標題版面配置

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Microsoft Word - ACG chapter00c-3ed.docx

Excel VBA Excel Visual Basic for Application

CC213

PowerPoint Presentation

epub83-1

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

投影片 1

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

C/C++语言 - C/C++数据

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

3.1 num = 3 ch = 'C' 2

Microsoft PowerPoint - OPVB1基本VB.ppt

CC213

Microsoft PowerPoint - Class5.pptx

PowerPoint 簡報

Java 程式設計入門

Microsoft Word - PHP7Ch01.docx

RUN_PC連載_12_.doc

Microsoft Word 軟體設計第二部份範例試題_C++_ _1_.doc

python内存管理

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

mvc

Microsoft Word - 投影片ch03

The golden pins of the PCI card can be oxidized after months or years

Java 1 Java String Date

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

C++ 程式設計

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

LEETCODE leetcode.com 一 个 在 线 编 程 网 站, 收 集 了 IT 公 司 的 面 试 题, 包 括 算 法, 数 据 库 和 shell 算 法 题 支 持 多 种 语 言, 包 括 C, C++, Java, Python 等 2015 年 3 月 份 加 入 了 R

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

Microsoft Word - 09.數學 docx

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

現在人類獲取地球內部訊息的方法, 是從可能影響我們身家性命安全的地震, 用數學模型把地震資料轉換成地震波速度, 進而獲得地底物質密度與深度的關係 地下世界知多少 km/s g/cm 3 P Gpa km S P S 3,000 3,000 ak K 透視地底 Percy Bridgma

AL-M200 Series

x 前言 Python Python ETL extract transform load Python Python / Python Python Python

Microsoft Word - ACL chapter02-5ed.docx

untitled

Microsoft PowerPoint - Bronson-v3-ch02.ppt [相容模式]

穨control.PDF

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

( Version 0.4 ) 1

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5


1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

epub 94-3

IP505SM_manual_cn.doc

Microsoft Word htm

Microsoft PowerPoint - Lecture7II.ppt

Microsoft PowerPoint - Class2.pptx

Java

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

Microsoft Word - 3D手册2.doc

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

資料結構之C語言重點複習

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

概述

CH01.indd

ebook35-2

Chapter 9: Objects and Classes

untitled

Learning python

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

基于UML建模的管理管理信息系统项目案例导航——VB篇

Bus Hound 5

Microsoft PowerPoint - 07-overloaded.ppt

Python_02

Microsoft PowerPoint - VB14.ppt

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

ebook14-4

Microsoft PowerPoint - 04-array_pointer.ppt

Windows XP

Perl

C 語言—陣列及字串

Microsoft Word - ch04三校.doc

ACI pdf

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

目錄

Microsoft Word - template.doc

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

untitled

封面-12

WinMDI 28

R 與資料處理 R 與資料處理 Wush Wu 國立台灣大學 1 of 58

Transcription:

Python 程式設計 林奇賦 daky1983@gmail.com

Outline u 課程簡介 u Python 介紹 u 環境安裝說明 u 變數與運算

課程簡介 u 台大系統訓練班 295 期 u 課程網站 :http://cflin.com/wordpress u 上課時間 :( 一 ),( 四 ) 19:00~22:00 u 給分方式 : 出席 (30%) 作業(70%)

Python 簡介 u Script Program Language u Object-Oriented Program Language u General-Purpose Program Language u Easy to learn u 誰在使用 Python 呢? u Google u 美國太空總署 (NASA) u

Python 簡介 Google 網站的搜尋系統 Youtube 視訊共享服務 BitTorrent 點對點檔案共享系統 NSA 的加密和智能分析 irobot 開發商業機器 吸塵器 NASA Los Alamos Fermilab JPL 的科學程式設計任務 Idustrial Light & Magic Pixar 製作電影動畫

Python 介紹 u 軟體品質 u 可讀性 u 強制縮排 u 物件導向 u 動態語言 u 直譯式的語言 u 增加了使用上的彈性 u 節省重新編譯的時間 u 強類型定義語言 u 強制數據類型定義的語言

Python 介紹 u 豐富的標準函式庫 u 可移植 u 容易擴充和嵌入 u Python 本身非常容易被擴充 u 負載量大的部份, 用 C 語言來寫, 然後用 Python 來引用, 就可以加快速度 u Python 可以嵌在其它程式裡面, 這樣的特性讓 Python 非常有彈性

Python 介紹 創始 為吉多 范羅蘇姆 (Guido van Rossum) 打發聖誕節的無趣, 決 開發 個新的指令碼解釋程式, 作為 ABC 語 的 種繼承 以 BBC 喜劇 Monty Python's Flying Circus 命名 Python 2.0 於 2000 年 10 16 發布, 主要是實作了完整的垃圾回收 (Garbage Collection), 並且 援 Unicode 2008 年 12 3 發布 Python 3.0 它不完全相容之前的 Python 代碼 不過, 很多新特性後來也被移植到舊的 Python 2.6/2.7 版本

Python 的作者 http://en.wikipedia.org/wiki/guido_van_rossum Guido van Rossum 吉多 范羅蘇姆

Python2 或 Python3 Python2.X Python3.X 穩定版本 現在進行式同時也是未來趨勢 version2.7 為最終版本 活絡發展中 較多的第三方函式庫 對初學者較友善 仍有為數眾多的使用者 較少第三方函式庫 2to3.py 3to2.py Brett Cannon, Python 3.3: Trust Me, It's Better than 2.7, PyCon 2013 https://www.youtube.com/watch?v=f_6vdi7ywua

簡介 Python 如何執

模組的存放位置 Window / 安裝 Python 的資料夾 /Lib Linux /usr/lib/python2.x

簡介 安裝 Window Python-3.x.msi Linux 系統本 進 Python 互動直譯器 (for Linux) Python 2.7 以下版本 #python Python 3.x #python3

基本概念 語法特 以冒號 (:) 做為敘述的開始 不必使 分號 (;) 做為結尾 井字號 (#) 做為註解符號, 同 # 字號後的任何字將被忽略 使 tab 鍵做為縮排區塊的依據 不必指定變數型態 (runtime 時才會進 binding)

變數與運算 變數的命名 以英 字 a-z 或 A-Z 或是 _ 為開頭 Ex: first-name false Ex: first_name right Ex: fruit, Fruit Python 關鍵字 刪除變數 del 變數

變數與運算 變數多重設定 Ex: orange, apple = 2, 5 告別許功蓋 Big5 碼的衝碼問題 採 unicode 編碼

簡介 print() 函數功能 print("a","b","c","d") A B C D print("a","b","c","d",sep="") ABCD print("a","b","c","d",sep=" ") A B C D 28

Python 2.x 與 Python 3.x 的差異 print 從陳述式 (statement) 改為函數 (function) from future import print_function print([object, ][, sep=''][, end='n'][, file=sys.stdout]) 27

認識 IDLE 小而實用的 Python 開發環境! 包含了實用的編輯器與 Python 直譯器 ( 互動介面,Python Shell) 自動縮排 語法高亮 提供互動介面 容易學習與測試

認識 IDLE 接下來介紹 IDLE 的各項功能 ü File : 開檔, 關檔, 存檔, 開新視窗 ü Edit : 複製, 貼上, 取代, 尋找, 復原 ü Shell : 重啟 shell ü Debug : 除錯的功能與工具 ü Option : 可以設定 IDLE ü Help : IDLE 幫助與 Python 文件

認識 IDLE 接著我們一步一步來看看 IDLE 的基本功能! 請跟著輸入並觀察結果 ( 不太了解沒關係, 這邊只是體驗!) Part I. Shell Step 1 : 輸入 1+1 Step 2 : 輸入 print( hello world! ) 在 Python Shell 中, >>> 是一個輸入的提示字串我們所有要下給直譯器的命令都要打在 >>> 之後喔

認識 IDLE Part II. A New File(.py) Step 1 : File > New Window Step 3 : File > Save 1. 3. Step 2 : 輸入 print( hello world! ) 2. 4. Step 4 : 存成.py, 按存檔

認識 IDLE Step 5 : 按 F5 或 Run > Run Module, 看看會出現什麼! 出現下面訊息代表成功了! 恭喜你, 踏出學習 Python 的第一步

Python 重要操作指令與快捷鍵 輸入終止符 Unix-Like : Ctrl+D Windows : Ctrl+Z <Enter> IDLE 熱鍵 Alt+p 上一個指令 Alt+n 下一個指令 Tab 指令補完

標記 直譯器利 標記 (token) 解析程式的功能, Python 中的標記有關鍵字 (keyword) 識別字 (identifier) 字 常數 (literal) 運算 (operator) 等四類 關鍵字 識別字 字 常數 運算

關鍵字 關鍵字為具有語法功能的保留字 (reserved word),python 的關鍵字, 如以下列表

識別字 識別字為寫程式時依需求 定義的名稱, 包括變數 (variable) 函數 (function) 類別 (class) 等, 皆為使 定義的識別字 除了關鍵字之外, Python 可 任何 Unicode 編碼的字元當作識別字 習慣上識別字的命名仍是以英 字 寫 A-Z (\u0041-\u005a), 寫 a-z (\u0061-\u007a), 底線符號 (_, \u005f) 與數字 0-9 (\u0030-\u0039) 為主

字 常數 字 常數的意思就是字 上的意義, 也就是說,1234 就代表整數數值 千兩百三 四的意義, 因此, 所謂的字 常數就是直接寫進 Python 程式原始碼的數值, 依資料型態分類有 字串字 常數 (string literal) 字節字 常數 (bytes literal) 整數字 常數 (integer literal) 浮點數字 常數 (floating-point literal) 複數字 常數 (imaginary literal)

運算 Python 提供多樣 功能完整的運算, 如下列表 分隔符號 (delimiter)

變數 (Variables) 和表 式 (Expressions) 表 式 3 + 5 3 + (5 * 4) 3 ** 2 Hello + World 變數指定 a = 4 + 3 b = a * 4.5 c = (a+b)/2.5 a = Hello World 型別是動態的, 會根據指定時的物件來決定型別 變數單純只是物件的名稱, 並不會和記憶體綁在 起 e.q. 和記憶體綁在 起的是物件, 不是物件名稱

關於變數 1/3 為何需要變數? 彈性與保存 變數好比容器 變數的名字 ( 罐子 A) 變數的值 ( 三公升 ) 變數的型態 ( 水 ) 變數要如何命名? 以底線或英文字母開頭字符 以底線, 英文字母和數字為後續字符 不可與關鍵字 ( 保留字 ) 相同

關於變數 2/3 定義變數與初始化變數 Var = 70 ( 整數 ) Var = 6.78 ( 浮點數 ) Var = "alcom lab ( 字串 ) 變數值同時可以看出變數型態 variable name = value 變數名稱必須符合規範 Programmer 撰寫 Python 時不必在意變數的 size( 容器的大小 ), 因為細節早被隱藏

關於變數 3/3 Python 的變數是可以更換型態的 這並非指 Python 沒有型態, 而是同一個變數名稱可以任意指稱裝載任何型態的容器 ( 物件參照 ) 在 Python Shell 中直接輸入變數名稱可看到變數的再現型態

賦值運算 賦值運算是最常被使用的運算 將運算的結果賦予 ( 存到 ) 一個變數, 將右邊運算的結果 ( 右值 ) 賦予左邊 ( 左值 ) left value = right value 等號是賦值運算的運算子, 代表把右邊給予左邊, 跟一般在數學上的意義 相等 是完全不同的

物件參照 1/3 Python 在實作上採取了參照物件的作法 個資料 ( 物件 ) 必須得有 個空間 ( 容器 ) 來保存它, 在許多程式語 中, 變數就是容器的名字, 但在 Python 中, 變數只是 張標籤, 此標籤指出了真正容器之所在, 因 參照了該容器裡 保存的物件 標籤 Python 的變數 參照 真正的容器 ( 空間 ) 物件 ( 資料 )

物件參照 2/3 範例 : 整數變數的賦值 ❶ 5 a 參照 ❷ ❸ kkk 7.890

物件參照 3/3 範例 : a b 參照 參照 10.5 hello a b 參照 參照 6 is : 判斷兩個物件的 id 是否相同 == : 判斷兩個物件的 value 是否相同

變數與物件 Python 中所有東 都是物件 (object), 這是說 Python 裡的資料 (data) 都是物件 凡是物件都有 : (id) 號碼 (type) 型態 (value) 數值 物件的值可以是可變的 (mutable), 或是不可變的 (immutable), 通常這是說複合資料型態 (compound data type) 的元素 (element) 是否可以替換, 例如序對 (tuple) 及字串是不可變的, 串列 (list) 或字典 (dictionary) 是可變的 當物件不再使 時, 直譯器會 動垃圾收集 (garbage collection), 釋放記憶體空間

可變與不可變 1/3 資料型態有分成可變的 (mutable) 與不可變的 (immutable) 指的是變數所參照的物件本身可否改變 不可變資料型態 : 整數, 浮點數, 字串 被自動回收 a 參照 5 6 變數 a 原先參照的物件 : 整數 5 並沒有被改變而是產生了新的整數物件 6 並且將變數 a 重新繫結到物件 6

可變與不可變 2/3 可變資料型態 : 串列, 字典 a 參照 0 1 2 1 a 6 a 參照 0 1 2 3 變數 a 原先參照的串列被改變了, 增加了 個元素 5.1 也改變了第三個元素 7 1 a 5.1 6 7

可變與不可變 3/3 可變的資料型態, 變數指定時會產生新的 id 部分不可變的資料型態, 變數指定時會對應相同的 id a b 參照 參照 [1,2,3] [1,2,3] a b 參照 參照 6

資料型態 整數 int 浮點數 float 複數 complex 字串 str 字節 bytes 字節陣列 bytearray 串列 list 序對 tuple 集合 set 字典 dict

數字型態 u 內建的數字型態 (numeric types) 共有三種 u int 整數 u100 u float 浮點數 u123.45 u complex 複數 u3+4j

數學運算 基本四則運算 : + - * / % 運算特性 : 以複雜者為主且運算精確性有限 Python 所 援的特殊運算 : 次 : 2**10 整商除法 : 10//3

複數運算 c.real 實部 c.imag 虛部

內建序列型態 內建的序列型態 (sequence types) 共有六種 str: 字串 (string), 不可變 (immutable) bytes: 字節 (byte), 不可變 (immutable) bytearray: 字節陣列 (byte array), 可變 (mutable) list: 串列 (list), 可變 (mutable) tuple: 序對 (tuple), 不可變 (immutable) range: 內建函數 range() 回傳的物件 (object), 常 於 for 迴圈 (for loop)

字串 (String) l 字串的特徵為引號, 包含單引號, 雙引號和三引號, 再現時預設以單引號表 l 使 索引位置可以存取元素 l 字串的元素是有序的 ( 誰前誰後有關係 ) l 字串頭尾的引號必須相同對稱 Strings ( 字串 ) a = Hello # Single quotes b = World # Double quotes c = Bob said hey there. # A mix of both d = A triple qouted string can span multiple lines like this e = Also works for double quotes

序列型態 (sequence types) 可進 以下的計算

串列 list 是最實 也最常 的群集 可以收集不同資料型態的元素 list 中的元素允許是 list list 的元素是有序的 ( 誰前誰後有關係 ) list 的特徵是中括號 [ ], 使 索引位置可以存取元素 顯示 list1 的第一個元素 ( 在電腦領域裡計數由零開始 ) 不同型態的資料可以被收集在同一個清單中

串列 (list) 任意物件的串列 a = [2, 3, 4] b = [2, 7, 3.5, Hello ] c = [] d = [2, [a, b]] e = a + b # A list of integer # A mixed list # An empty list # A list containing a list # Join two lists 串列的操作 x = a[1] y = b[1:3] z =d[1][0][2] b[0] = 42 # Get 2nd element (0 is first) # Return a sub-list # Nested lists # Change an element

串列 (list) 型態有以下的 法

序對 (tuple) l l 可以收集不同資料型態的元素 tuple 中的元素允許是 tuple l tuple 的元素是有序的 ( 誰前誰後有關係 ) l l tuple 的特徵是 括號 (), 使 索引位置可以存取元素與 list 類似, 最 的不同 tuple 是 種唯讀且不可變更的資料結構, 不可取代 tuple 中的任意 個元素, 因為它是唯讀不可變更的

序對 (tuple) tuple f = (2,3,4,5) g = () h = (2, [3,4], (10,11,12)) tuple 的操作 x = f[1] y = f[1:3] z = h[1][1] # A tuple of integers # An empty tuple # A tuple containing mixed objects # Element access. x = 3 # Slices. y = (3,4) # Nesting. z = 4

內建集合型態 (set) l 內建的集合型態 (set types) 共有兩種 l l set: 集合, 可變 (mutable) frozenset : 原封集合, 建 後不可新增或刪除元素 (element), 因此為不可變 (immutable) l 集合型態的字 常數使 括弧 { }, 其物件屬於複合資料型態 (compound data type), 也就是說單 集合型態物件可以包含多個元素, 但沒有重複的元素

內建集合型態 (set) l set 的元素是無序的 ( 誰前誰後沒關係 ) 沒有重複的元素, 而且設定時的順序也不影響 set 為可變型態, 所以變數指定時會產生新的 id

集合型態的物件可進 之運算

集合型態物件相對應的 法 由於 set 型態是可變的, 因此有額外兩個新增與刪除元素的 法

內建字典型態 (dict) l 建 字典變數可利 括弧 { }, 裡頭以 key : value 為配對的資料項, 若有多筆資料再以逗號區隔開 l 例如 d1 = { "a":100, "b":200 } 共兩筆資料 key value l 與 list, tuple 不同, 不以索引位置存取元素, 改以 key 當作索引存取元素

內建字典型態 (dict) l 使 字典須注意, key 必須是不可變的 (immutable) 資料型態, 如數字 字串 (string) 等, value 沒有限制 l dict 的元素是無序的 ( 誰前誰後沒關係 )

字典物件可進 的運算

字典物件的 法 (method)

型態轉換 我們在處理資料的時候, 有些資料型別不是我們想要的, 該怎麼處理? 資料型別轉換 : 型別 ( 資料 ) 將 x 轉換為整數 :int(x) 將 x 轉換為浮點數 :float(x) 將 x 轉換為字串 :str(x) 將 x 轉換為布林型別 :bool(x) 型別轉換會在記憶體空間配置出新的物件, 內容為轉換後的結果

動動腦 u num = '1000' #str 字串型態 u 若需要除以 2 運算後得到數字 500 的話怎麼辦? u nums = [1,1,1,2,2,3,4,5] #list 串列型態 u 若需要將重複的元素去除的話怎麼辦? u nums = (10,5,7,1,6,2) #tuple 序對型態 u tuple 並不提供排序的 法, 若要排序 ( 由 到 ) 該怎辦? u 適時的轉換型態可以解決 常多的問題

Homework1 u u 作業格式 u 檔名 :py2xx_ 中 姓名 _hw1.py 繳交 式 u 上傳 課程網 裡 的上傳作業連結 (dropbox)

Homework1 u 作業要求 u Q1. 使 set 型別完成下列問題 : 本班期末考試 u 數學及格的有 : Tom, John, Mary, Jimmy, Sunny, Amy u 英 及格的有 : John, Mary, Tony, Bob, Pony, Tom, Alice u 分別印出數學及格但英 不及格的名單, 數學不及格但英 及格的名單, 兩科都及格的名單 u 最後印出全班總共有幾個同學 u Q2. 使 dict,list 型別完成下列問題 : u Tom 作業成績為 80, 100, 90, 95,John 作業成績為 100,93,75,80 u 請以 dict 型別存放兩個同學的資料 key: 名字,value: 分數列表 (list) u 請分別算出兩位同學的平均分數並且印出

參考 u 官 網站 u https://www.python.org/ u Python code 視覺化網站 u http://www.pythontutor.com/