六月 20, 2010

電腦做什麼事
pydoing
is about »

tag cloud

» 第一章 與直譯器互動

計算機功能 基本資料型態 變數的觀念 Help!Help! 第一個複合資料型態:字串 印出"哈囉!你好" 線上與直譯器互動 玩遊戲時速度曾經突然變慢嗎?為什麼呢?啊!MSN忘記登出,偶然的訊息打斷電腦目前的運作,原先一件件電腦已經排定的工作,現在又得重排一次。 電腦是如何安排工作的呢?對了,就是作業系統。作業系統是我們與電腦溝通最重要的介面,當我們利用電腦完成我們日常的工作時,開啟多個視窗好像已經是再普通不過的事情了。 點擊開啟大圖...... 許許多多的應用軟體透過作業系統的協調,重疊的視窗讓我們得以同時進行處理。那麼,如果我們要寫程式跟電腦溝通又該如何進行呢?仍是一樣,透過作業系統。 利用編譯式語言寫程式,我們需要另外用文字編輯器,如記事本之類的軟體先寫好程式碼,然後進行連結、編譯等流程。當發展的程式越趨龐大時,每一次寫完程式之後的測試動作變成一件很恐怖的事情,

十二月 29, 2009

電腦做什麼事
pydoing
is about »

tag cloud

» 第十章 更多的例子

昆蟲世界 基本的幾何形狀 用七巧板排列 滑鼠控制移動 張貼新的事件 可移動板塊的七巧板 除了文字之外,我們還可以在Pygame視窗中載入圖片或是直接利用draw模組來繪圖,我們先來看看如何載入圖片,以下的程式同時顯示背景圖片及滑鼠游標的圖片。 #《電腦做什麼事》的範例程式碼 #http://pydoing.blogspot.com/ import pygame from pygame.locals import * from sys import exit screen_size = (800, 600) title = "Hello, Real world!" background_image = "background.png" cursor_image = "cursor.png" def mouse_pos(img): x, y =

十一月 20, 2009

電腦做什麼事
pydoing
is about »

tag cloud

» 第二十章 上線測試

CMS 上線之前,談談LAMP的概念 上線測試 自訂404錯誤頁 其他學習資源 結語 我們概略複習一下利用Django製作網站的開發流程。 點擊開啟大圖...... 第一步便是規劃物件原型,也就是MTV中的M,其為我們希望透過網頁所要處理的表單資料,在討論板的例子便是models.py裡所定義的Subject與Comment型態,其中的標題、名字、日期與內容等欄位。 接下來大體分成兩個部份,其一用來呈現網站內容,另一個部份則是利用客製化後台讓我們便於管理網站。前者又可分成三項工作,分別為MTV中作為T的樣版、作為V的View函數,以及設定連結網址的URLconf,三者分別儲存在template資料夾、views.py與urls.py之中。其中,樣版以CSS裝飾,HTML為骨架,樣版語言處理顯示呈現的結果,而CSS儲存在style.css之中,樣版分成五個HTML檔案,如下。

» 第十九章 簡單的討論板

討論版的專案 M - 物件模型 T - 樣版 V - View函數與URLconfs 網站的管理 這一章我們延續上兩章的留言板,使網頁可依主題進行留言,使之成為討論板,同時以CSS擴充版面風格,所採用的CSS如下。 /*《電腦做什麼事》的範例程式碼 http://pydoing.blogspot.com/ */ body { background: #4F6A5F } a { color: #FFFFFF } .wrapper { background: #4F6A5F; width: 80%; padding: 8px; margin: 30 auto auto; border-style: solid; border-width: 0; } .heading { background: #142D34; width: 98%; padding: 10px;

» 第十八章 利用樣版系統編排

MTV的概念 now.html及page.html 樣版目錄的設定 其他的標籤及過濾器 樣版的繼承 留言板的索引頁 - index.html 瀏覽個別留言 - entry.html 上一章中建立了留言板的應用程式,接著進入後台進行管理,可是還沒有提及如何做出供他人瀏覽的網頁。我們的資料越來越多,該如何做出網頁呢? 第十六章我們做網頁的方法是直接把HTML寫進字串中,然後利用網址改變以及抓取電腦的現在時間,直接以變數提供給HTML的字串,最後作為HttpRespons()的參數,使之輸出到瀏覽器中。 這是利用Django做網頁的方法之一,當要放進網頁的內容越來越多,同時也希望進行更多的版面配置,使網頁呈現出美觀的外在,把HTML寫進字串的方法就顯得冗贅繁複。其實,這並不是Django做網頁唯一途徑,普遍的作法是利用樣版系統編排網頁的版面。 樣版系統結合HTML語法,

» 第十七章 網頁的應用程式

settings.py的調整 資料庫的觀念 建立app 規劃物件模型 載入物件模型到資料庫 urls.py的調整 後台管理 錯誤處理 所謂網頁的應用程式是指利用瀏覽器執行伺服器上的應用程式,使用者不須事先安裝,典型的例子如Google文件。 點擊開啟大圖...... Google文件另外包含簡報、試算表、表格等,同時Google也提供如地圖、閱讀器及電子郵件等多項服務,而另一個搜尋引擎Yahoo!奇摩,或是入口網站yam天空、PChome等也多有提供一些如相簿、購物、算命、部落格等的服務,我們使用這些服務多半透過瀏覽器,因此這些都是網頁應用程式的例子。 某些網路服務,如部落格將介面分成供大眾瀏覽的前台及管理用的後台。 點擊開啟大圖...... 後台提供撰寫文章,版面配置及部落格各種設定等等的應用程式,而前台可以看到的連結項目、動畫,某些特定功能如搜尋等,

» 第十六章 動態網頁的開發框架

Django的設計哲學 安裝Django 建立專案 啟動伺服器 NOW! URLconf 錯誤代碼404 動態的URL 早期的網頁只是單純的顯示資料,因此網站的建置、經營全部依賴站長的用心程度,接著如蕃薯藤、奇摩等搜尋引擎的興起,其實那時候的搜尋引擎就像電話簿一般,提供目錄供人檢索,找尋所需的資料。 這樣的網頁被稱之為靜態網頁,也由於網路技術的蓬勃發展,AJAX、RSS、Flash與部落格等等新穎技術匯集而成Web 2.0,而靜態網頁的相關技術,HTML的制定及發展則被歸類為Web 1.0。 Web 2.0的精髓在於製作動態網頁,利用資料庫組織檔案,檔案總數不會每增加一頁就增加一個,而是除了建構網站所需的基本檔案外,另外加入所需的資料庫檔案個數。動態網頁同時與使用者有立即直接的互動,如同線上討論版、網誌或是訂閱RSS新聞等,使用者透過自己的電腦就可以連結到其他的電腦,

» 第十五章 Docs、Demo與wxGlade

Demo 避免重新發明輪子 先看看效果 整合問題 輔助工具:wxGlade 下一步 wxPython官網的下載頁,除了wxPython的安裝檔外,還可以下載「Docs, Demo, Samples, etc.」的安裝檔。 點擊開啟大圖...... 「 Docs 」就是文件,「 Demo 」是展示的範例,「 Samples 」則是範例的原始程式碼,當安裝完成後,打開開始功能表,我們會發現安裝的許多工具程式,先來看看 Other Docs 資料夾。 裡頭包含安裝指南、手冊等所有的文件,我們移動游標,點擊底下的wx HTML Help說明檔。 點擊開啟大圖...... 這個說明檔提供了wxWidgets詳盡的參考說明。 點擊開啟大圖...... 當然,如果要深入研究由wxWidgets延伸而來的wxPython,這些說明文件就會是很重要的參考資源。

» 第十四章 簡單的文字編輯器

建立視窗及狀態列 建立本文區 建立工具列 建立選單列 建立新檔的訊息視窗 開始編輯後的狀態列提示 檔案選單及警告訊息 編輯選單的功能 說明選單中的關於視窗 上一章中,我們看到如何在面板中排列提示訊息、輸入文字方塊,以及顯示歡迎及現在時間的訊息。這一章裡,我們以簡單的文字應用軟體為例,說明其他常見的視窗元件,包含選單列、工具列、狀態列與對話視窗如何建立。 圖形使用者介面基本的規劃如下圖。 點擊開啟大圖...... 第一行的選單列,預計有以下三個功能表。 點擊開啟大圖...... 下一行的工具列,利用圖形將常用功能製作成九個按鈕。 點擊開啟大圖...... 視窗下方的狀態列則作為提供提示訊息。 建立視窗及狀態列 以下的程式建立一個具有狀態列的視窗。 #《電腦做什麼事》的範例程式碼 http://pydoing.blogspot.com/ #-*- coding: UTF-

» 第十三章 應用程式介面設計

Say Hello! 文件編碼及u前綴字串 繼承結構 MyFrame 字型設定與顯示文字 使用BoxSizer來布局 按鈕事件 我們開始介紹另一個圖形介面設計,Python另一個從C++語言延伸出的wxPython模組庫,專門用來開發應用程式。應用程式也就是我們平常所說的軟體,文書處理軟體如Word、Writer或Pages,網頁瀏覽器如I.E.、FireFox或Safari,還有其他各式各樣的軟體,可以進行不同的應用。 在利用Pygame寫遊戲的時候,由於遊戲中的物體如乒乓球中的球、球拍,或是象、虎、貓、鼠生存遊戲中四隻動物的移動,實際在螢幕上移動的是Pygame繪出的圖形或是我們提供的圖檔,他們在視窗中的顯示位置並不固定,所有的座標都是由計算得來的。 然而當我們使用軟體時,絕大多數應用軟體的情況很不一樣,大部分視窗所顯示的圖形都已經安排好位置,因而要進行一項操作時,

» 第十二章 人工智慧

回顧鬥獸棋 建立World 建立Animal 探索:隨機的在視窗中移動 建立Exploring 重提State 下一步 遊戲中常見人工智慧一詞,什麼是人工智慧呢?不外是我們希望遊戲中某些角色由電腦所控制,並且適當的表現出如同我們人類一般的智慧,因故稱之為人工智慧。 角色可以是對手(或敵對),也可以是夥伴,端視遊戲規劃而定。其實,上一章中我們所加入的灰色球拍已經可以算是簡單的人工智慧了。怎麼說呢?player1control()函數中,當球的y座標遞減到400以下的時候,我們設定的灰色球拍便開始隨球的x座標移動,球往左,灰色球拍也往左,同樣的,球向右,灰色球拍也朝右邊移動。 乍看之下灰色球拍彷彿具有一定的智能,可以看得到球的位置,然後隨著球移動的方向嘗試去接球。不論灰色球拍是不是真的很聰明,仍是表現出具有智能的行為,我們若沒有對「智慧」有嚴格的定義與申論,

» 第十一章 乒乓球

模擬球的移動 隨機方向 時間因素 加入白色球拍 用球拍擊球 顯示計分 加入灰色球拍 加入選單 桌球,又稱乒乓球,這是一種廣為人知的運動,也是早期實作出的商業電動遊戲之一,在這一章裡,我們嘗試簡化的版本,初步規劃如下圖。 點擊開啟大圖...... 視窗設定成600×800的大小,球台以黑色作為背景,黃色的球,上方灰色的球拍與下方白色的球拍,右方顯示分數。遊戲規則簡單一點,不考慮一局一局的發球回合,球由中央朝隨機方向發出後,到視窗的四個邊緣都會彈回,球拍可以直接把球擊出。如果球落在球拍後方的視窗邊緣,對手就得一分。 我們逐步發展這個程式,從模擬球的移動到將灰色的球拍交給電腦自行控制。 模擬球的移動 我們利用draw模組中的circle()函數畫出球,然後每一次重新繪圖時,球的圓心x座標及y座標各遞增1,如此產生效果彷彿平面上的球在移動,程式碼如下。 #《電腦做什麼事》

» 第九章 遊戲的圖形顯示

第一個例子 座標與顏色 建立顯示的視窗 設定字型 事件處理 動畫效果 Joel Spolsky提到「如果程式的行為與使用者的期望完全一致,就是一個使用良好的設計介面。」的確,良好的介面設計讓使用者容易操作,不需多費時間學習,然而設計不良的介面令人猜不透程式的想法,初次體驗一旦摸不著頭緒,即便功能強大的程式,也往往被人棄之如敝屣。 當然,這裡所講的介面是使用者與軟體互動溝通的管道。第三章所提的「介面」則是我們自己寫程式時去利用其他已經寫好的程式碼,內建或自訂的函數、型態、模組都是透過「介面」,便於程式的開發。其實道理都是一樣的,優良的使用者介面讓人易於發揮軟體的功能,好的程式介面則可縮短開發時間,便於重複利用。 可是設計使用者介面卻不太簡單,很多時候像是藝術創作,不同的顏色組合、排版格局往往給人不同的感受,另一方面,難以理解的程式介面也常常陷入修改困難,預期效果無法達成,

» 第八章 電腦模擬

鬥獸棋的模擬 幕後運作 選單的互動模式 下一步 我們一路走來已經寫過不少的程式,透過規劃,進行測試,找出錯誤,一步一步完成階段性的版本,我們不只是在發展,同時也在維護程式功能的完整。實際軟體發展的過程會更複雜,尤其當需求漸增,程式日趨龐大,測試、偵錯及維護也就變得越來越困難。 程式的發展與軟體的構築在今日都以經成為專門學問,有許多不同的見解與主張,也有許多的方法論,甚至由方法論擴展不同程式語言的設計哲學。我們的選擇是Python,原因不外乎是規劃、測試與除錯的程式發展流程更為簡便,同時Python也提供了例外處理機制。 然而程式可以不僅僅是去做我們要程式做的事情,針對許多未知的情況,由以往的經驗與累積的資料,經過計算我們可以預測可能發生的結果,這就是電腦模擬。 例如對颱風路徑的推測,需要收集地面及高空的氣壓、溫度、溼度、風速等等資料,匯集製作圖表,

» 第六章 檔案存取與例外處理

覆寫檔案 問題是………. 例外處理 第四步:套件 鬥獸棋的情況 棋子的移動 十六個的座標 布林函數 還有一個問題 如果要進行檔案的存取,我們可以利用內建函數open(),其用法如下。 #《電腦做什麼事》的範例程式碼 #http://pydoing.blogspot.com/ open("filename", “mode”) 函數open需要兩個參數,而且兩個都為字串。第一個參數是檔案名稱,如果程式與程式所要開啟的檔案在相同目錄下,這裡只需要單純的檔名,但如果兩者並不在相同的目錄下,檔名的參數就要連帶包含目錄路徑。第二個參數則是開啟模式,大體上分為三類,“r”為讀取,“w”為覆寫或新建,“a”則為增加。 我們以一個讀取並印出純文字檔的程式作為例子。 #《電腦做什麼事》的範例程式碼 http://pydoing.blogspot.com/ #-*- coding: UTF-8

» 第七章 “Batteries included”

math time sys os random 我們已經見過Python的基本語法以及許多有用的built-ins,但就好像裝好電池的數位相機一樣,我們希望拿到手上就立即能捕捉許多有趣、新鮮的畫面,相機之於攝影者是工具,程式語言的Python亦如斯。 “Batteries included”是Python語言的設計哲學之一,Python的標準安裝直接包含了許多有用的模組,標準模組庫提供各式各樣的應用,大體上,絕大多數的工作都能藉由引入標準模組庫的模組來完成。 有哪些模組呢?包括數學相關工具、網路及其協定相關工具、標記語言相關工具、檔案及目錄相關工具、壓縮相關工具、資料處理相關工具、作業系統相關工具、多媒體相關工具、圖形使用者介面相關工具、程式發展相關工具………...等等。 很多呢!不是嗎?引入的方式就跟自行定義的套件一樣,唯一不同的,標準模組庫所存放的位置在Python

十一月 19, 2009

電腦做什麼事
pydoing
is about »

tag cloud

» 第五章 程式結構

編碼問題 第三步:模組 模組與程式 鬥獸棋的棋盤 把棋子放入棋盤 Docstring 風格指南 Be Pythonic 到目前為止我們執行程式都透過IDLE的Python shell,這沒什麼問題,但很多時候我們仍會想要直接執行我們所寫的程式,就像Windows底下的exe執行程式一般。這不難,因為有安裝Python的Windows環境,所有儲存Python程式碼的.py檔案都可以利用滑鼠點兩下直接執行。 點擊開啟大圖...... 程式只要沒有加入圖形使用者介面,預設會從命令列模式來執行,對Windows系統來說就是「命令提示字元」的視窗。大體上在命令列模式下所顯示的方式都跟IDLE的Python shell類似,IDLE則提供了程式編輯的視窗,讓我們可以另外寫程式,然後載入Python shell執行。 什麼是圖形使用者介面?其實舉凡現在的Mac、Windows或是Linux

» 關於《電腦做什麼事》

我們學習語言是一件很自然的事情,從小不斷的聽身旁的人說話,每一種語言都有特定的語音組合方式,習慣以後,便多以模仿的方式發出聲來。慢慢的隨年紀漸增,才又多少學到些特別一點的用法,俚語、俗語甚而說話技巧。 總是一步一步來,學習外語也是一樣的,因為需要去講,去跟別人溝通、表達意見,重要的是把自己的意思表達出來,從而學會使用外語。凡是任何語言作為溝通表達意義的方式,這是我們身為人,只要環境許可,天生自然而然就會的,我們需要明白,手語、旗語到節奏的鼓聲,這些特別設計出作為表達的方式與語言相較,全都沒有例外,所以程式語言,人與電腦間的溝通方式,自然也不會例外。 重點是我們應該先要學會「說話」,而非學會一堆「說話技巧」,可是大部分程式語言提供給初學者的教科書,多半注重「說話技巧」,忘了先要學會怎麼說。然而「說」,其實是一件很單純的事情,我們屏除大量的「技巧」,《電腦做什麼事》以系列文章的方式,

» 第四章 資訊隱藏

第二步:自訂資料型態 型態的初始化 運算子多載 第三個複合資料型態:字典 來玩鬥獸棋 老鼠的兒子會打洞 主要遊戲迴圈 線上與直譯器互動 語言對實物所表達的常常是代稱,而且這樣的代稱是經年累月的習慣,如「桌子」之所以稱為桌子,我們實在很難找出當初為什麼要用「桌子ㄓㄨㄛ ㄗˇ」,兩個字拼寫在一起。然而在語言的使用上,桌子就是桌子,沒有什麼特別的。 代稱可以說是比擬,一種抽象的比擬,這就不難理解為什麼英文稱桌子為「table」,發音與中文大相逕庭,完完全全的不同,可是都表示同一個意含。自然語言是如此,大體上全都反應到我們生活各種的活動,路標常常是大大的圖示,有些提醒司機,有些則提醒路人,主要的目的是讓我們立即明白圖示透露的資訊。 設計物品的設計圖也用了不少圖示,這樣的圓形表示這種元件,那樣的方形則是代表另一種元件,圖形背後所顯示的是我們已經很習慣,並且很自然的做抽象化的思考。

» 第三章 設計介面

關鍵字與built-ins 變數命名規則 第一步:自訂函數 區域變數 註解 遞迴的方法 讓使用者輸入資料 線性搜尋 中文資料處理 線上與直譯器互動 在Python shell中寫些簡單的程式直接與直譯器互動,我們可以得到立即的結果。然而如果每次都要一行一行的輸入,就顯得沒什麼效率,也很難重複利用我們寫過的程式。我們要如何重複利用我們所寫的程式呢? 譬如我們現在要來寫一個程式,這個程式是要使用者輸入一個整數,然後在已經數列中搜尋一個整數,如果這個整數存在,程式印出「在...的位置」,而又如果這個整數不存在,程式則印出「不在這裡」。 我們希望藉由一種介面,使得透過介面與介面之間的聯繫來達到程式碼重複使用的目的。上述的例子中,我們會希望程式像是下面這樣的進行。 input_integer search print_result 先是輸入想要搜尋的整數數值,然後進行尋找。「

biggo.com.tw

A Django site.