發表文章

目前顯示的是 2016的文章

Python 研究 - 基礎篇 2

for迴圈 >>> for i in range(len(name)): ...     print(name[i]) ... a s d f g rang為跌代器,range(10)相當於0-9。 本例子用for迴圈印出字串name裡的每一個字元。 while迴圈 >>> name='anthony' >>> while True: ...     if name=='anthony': ...             print('hello,anthony') ...             break ...     else: ...             print('error') ...             break ... hello,anthony 當條件為真實,執行此迴圈,本例while迴圈中加入判別,如果條件滿足則印出hello,anthony跳出迴圈(break用來跳出迴圈,不跳就會變成無窮迴圈),如果條件不滿足則印出error跳出迴圈 3.列表(list) 列表的表現形式:    name_list = ['akon','ak','cloris',12]                                ...

Python 研究 - 基礎篇

關於Python解釋器聲明和內容編碼: 在scripts的開頭必須聲明用什麼解釋器來執行程式碼和聲明編碼(Python3可以不用聲明內容編碼),Python解釋器在載入.py文件中的程式碼時,會對內容進行編碼(預設ascii),聲明如下:    #!/usr/bin/env python (linux環境下使用) # -*- coding:utf-8 -*-   常用編碼種類別:   ascii:美國標準訊息交換碼(8位)   unicode:萬國碼(至少16位),可以表示所有語言   utf-8:可以自動識別需要ascii或unicode編碼(節省空間)    註釋   單行註釋用#號表示,如下: #這一行被註釋   多行註釋用三個單引號(''' ''')或雙引號(""" """)表示,如下: ''' 多行註釋 多行註釋 ''' """ 多行註釋 多行註釋 """ 變 數 變數名要求: 只能用字母,下劃線和數字組成 第一個字元不能為數字 變數名要通俗易懂 聲明變數名的時候不能使用特殊關鍵字 (False,class,finally,is,return,None,continue,for,lambda,try ,True,def,from,nonlocal,while,  and,del,global,not,with,as,elif,if,or,yield,assert,else,import,pass,break,except,in,raise) 輸入:   輸入可以使用input(Python3)或raw_input(Python2.x)方法,用法如下: name=input('請輸入內容:') #Python3中用法 name=raw_input('請輸入內容:') #Python2.x中用法 資料類別型: 1.單值 數字:   整形(int):最大取值為2147483647(2**31-1)   長整型(long):最大取值為9223372036854775807(2**63-1)   浮點型(float):3....

Python 研究 - 有趣的 ** 用法

* 在 python 中,求餘數一樣是 %,求冪次則是 ** 例如要得到三的平方      3 ** 2 //為去除餘數,例如:5/2.0 的結果為 2.5,5//2.0 的結果為 2

Python 研究 - lambda 用法

Python 提供了一個簡易的 function define:lambda,用完即丟,不著痕跡。讓你實作出很簡單的 function ( 只處理一個運算式 )。 lambda param1, param2, ... : expression #其實就等於 def fun( param1, param2, ... ) :     return expression 其中的 expression 不能放 assignment,也就是這一行指令不能放=等號。因為,它就這麼簡單,別把它搞複雜化嘛~ Ex: def func(x, y, z):     return x + y + z #>>>  func(1, 2, 3) #>>>  6 func2 = lambda x,y,z : x+y+z #>>>  func2(1, 2, 3) #>>>  6 #也可以應用在 map  上 my_list = [1, 2, 3] map( lambda i: i * i, my_list ) #>>>  (1, 4, 9) lambda 在某些方面而言確實是很好用,但是也不能濫用,否則可能造成程式的可讀性降低。

Python 研究 - 字串格式化相關

Python 提供和 C 一樣的字串格式化用法可以參考下表 格式化字串時,所使用的 %d、%f、%s 等 與C語 言類似,之後使用%接上一個 tuple , 也就是範例中以 () 包 括的實字表示部份。一些可用的字串格式字列舉如下: %% 在字串 中顯示% %d 以10 進位整數方式輸出 %f 將浮點 數以10進位方式輸出 %e, %E 將浮點 數以10進位方式輸出,並使用科學記號 %o 以8進 位整數方式輸出 %x, %X 將整 數以16進位方式輸出 %s 使用 str() 將字串輸出 %c 以字元 方式輸出 %r 使用 repr() 輸 出字串

PHP 在 xampp 開啟 XDebug

圖片
首先找到 php.ini 路徑在C:\xampp\php\php.ini 開啟後找到應用檔案的位置 zend_extension = "D:\xampp\php\ext\php_xdebug.dll" 接著因為我們要做網頁的除錯,所以要加入遠端的一些設定(有的只是拿掉該行前面的註解";"而已),如下: //其實這行可開可不開,這行主要就是開啟偵錯的堆疊程序的功能,是否需要當然就是因人而異嘍 xdebug.default_enable = "On" //這行就是必需的了,若是要針對網頁的偵錯,這個就一定要打 xdebug.remote_enable = 1 //除錯的協定,若是php3以前的版本,就請改為"gdb" //官方設明文件中有提到,從xdebug 2.1以後的版本只支援"dbgp"這個協定 xdebug.remote_handler = "dbgp" //要除錯的host name或是IP(不用加上埠號) xdebug.remote_host = "localhost" //xdebug要用到的埠號 xdebug.remote_port = 9000 //這個項目一樣是看個人需求,看是否需要將查錯的資料儲存出來,設定其存放的目錄 xdebug.trace_output_dir = "D:\xampp\tmp" 以上設定完成後,請記得重啟Apache 接著執行phpinfo();可以看到多出下圖中被框起來的那一段文字

Python 研究 - 中循環語句中的 else 用法

本文討論Python的for…else和while…else語法,這是Python中最不常用、最為誤解的語法特性之一。 Python中的for、while循環都有一個可選的else分支(類似if語句和try語句那樣),在循環迭代正常完成之後執行。換句話說,如果我們不是以除正常方式以外的其他任意方式退出循環,那麼else分支將被執行。也就是在循環體內沒有break語句、沒有return語句,或者沒有異常出現。考慮一個簡單的(無用的)例子: Python >>> for i in range(5): ...     print(i) ... else: ...     print('Iterated over everything :)') ... 0 1 2 3 4 Iterated over everything :)     上面的程式碼中,我們在range(5)上迭代並打印每個數字。因為我們讓循環正常完成,所以else分支也被執行,並打印出Iterated over everything :) 。相反,如果我們用break語句終止循環,那麼else分支將不會執行: Python     >>> for i in range(5): ...     if i == 2: ...         break ...     print(i) ... else: ...     print('Iterated over everything :)') ... 0 1 注意,儘管循環所迭代的序列是空的,else分支依然會被執行,畢竟循環仍然是正常完成的。 Python >>> for i in []: ...     print(i) ... else: ... ...

Python assert 斷言使用方式

使用 assert 所謂斷言(Assertion),指的是程式進行到某個時間點,斷定其必然是某種狀態,具體而言,也就是斷定該時間點上,某變數必然是某值,或某物件必具擁有何種特性值。 如果你在Python中要進行斷言測試,則可以使用assert陳述句: assert <test>, <message> test是狀態測試,而message是斷言失敗時所要呈現訊息。例如,在 定義類別 中定義的Account類別,存款的時候不能提負數,提款的時候也不能是負數(真正的提款機也不會有負數鍵),所以呼叫deposit()或withdraw()時傳入的值必然是大於0,這時你可以使用斷言檢查: class Account:     def __init__(self, number, name):         self.number = number         self.name = name         self.balance = 0             def deposit(self, amount):         assert amount > 0, '必須是大於 0 的正數'         self.balance += amount             def withdraw(self, amount):         assert amount > 0, '必須是大於 0 的正數'       ...

Python 物件導向的__init__方法

在Python的類中有很多方法的名字有特殊的重要意義。現在我們將學習__init__方法的意義。 __init__方法在類的一個物件被建立時,馬上執行。這個方法可以用來對你的物件做一些你希望的 初始化 。注意,這個名稱的開始和結尾都是雙下劃線。 使用__init__方法 例:使用__init__方法 #!/usr/bin/python # Filename: class_init.py class Person:     def __init__(self, name):         self.name = name     def sayHi(self):         print 'Hello, my name is', self.name p = Person('Swaroop') p.sayHi() # This short example can also be written as Person('Swaroop').sayHi() (源文件:code/class_init.py) 輸出 $ python class_init.py Hello, my name is Swaroop 它如何工作 這裡,我們把__init__方法定義為取一個參數name(以及普通的參數self)。在這個__init__裡,我們只是新增一個新的域,也稱為name。注意它們是兩個不同的變數,儘管它們有相同的名字。點號使我們能夠區分它們。 最重要的是,我們沒有專門呼叫__init__方法,只是在新增一個類的新範例的時候,把參數包括在圓括號內跟在類名後面,從而傳遞給__init__方法。這是這種方法的重要之處。 現在,我們能夠在我們的方法中使用self.name域。這在sayHi方法中得到了驗證。

Python if __name__ == '__main__': 用法

 Python 程式裡的 __name__ 可以用來分辨程式是直接執行還是被 import 的 剛開始寫 python 的時候,看到幾乎每個程式的最後面都有一段 code: if __name__ == '__main__':  doSomething() 一直都不懂那是什麼意思,只知道要照抄然後執行程式時那段就會被執行。後來深入研究之後才比較瞭解 __name__ 的意思了。 原來如果一個 python script 是被別的 python script 當成 module 來 import 的話,那麼這個被 import 的 python script 的 __name__ 就會是那個 python script 的名稱。而如果這個 python script 是直接被執行的話,__name__ 就會是 __main__。 舉例來說,如果我有一個程式叫做 myModule.py,內容就是一行顯示自己的 __name__: print '__name__:' + __name__ 那麼我直接執行它的話,結果會顯示 __main__: bash-3.2$ python myModule.py __name__:__main__ 但如果我準備了另一個程式叫做 testModule.py,裡面就這麼一行去 import myModule: import myModule 然後我去執行 testModule.py 的話,則會顯示 myModule: bash-3.2$ python testModule.py __name__:myModule 結論: 1.直接執行與被執行 2.直接執行 __name__ == '__main__': 3.被執行 import myModule 4.所以用 __name__ 就可以分辨我的程式是被 import 當成模組還是被直接執行的。這樣附帶的好處就是如果我寫的程式平常可以被 import 來使用,但有時它自己也可以直接執行。其它語言的話,可能就要區分 library 跟使用 library 的程式,而 python 的話這兩者的界線就很模糊。

PHP 教學 - 常見亂碼問題

PHP亂碼問題,UTF-8亂碼常見問題小結     於 HTML head 指定此頁編碼為 UTF-8         <head>         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">         </head>     PHP 送 Header 告訴瀏覽器這頁是 UTF-8 編碼         <?php         header("Content-Type:text/html; charset=utf-8");         ?>     設定 Apache 送出頁面預設語系 UTF-8 (比較不建議用此方法)         addDefaultCharset UTF-8         # 不過建議這行要包在 Directory 或 VirtualHost 內, 才不會影響到其它網頁.         <Directory "/var/*/blog">         addDefaultCharset UTF-8         </Directory>       ...

HTML5 - jqery mobile post 功能

如果要從 A 檔連到 B 檔,且 B 檔包含多頁面,則 A 檔連結要設 rel="external" 或 data-ajax="false",要不然整個站的 ajax 在設定裡關掉也可以。因為 jM 的網址結構,讓 ajax 沒關掉的話會出問題。 例如假設這樣寫一個 jquery mobile 表單頁面使用 post 導向 php 是無法通過的 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.css"> <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script> <script src="http://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> </head> <body> <div data-role="page">   <div data-role="main" class="ui-content">     <form method="post" action="demoform.php">       <label for="fname" class="ui-hidden-accessible">姓名:</label>      ...

PHP 教學 - 無窮迴圈用法

圖片
我們有時會需要寫一些無窮迴圈,多半程式語言都會提供類似 while(true) 這樣的語法句子,那麼 php 又該如何表達呢? 其實也可以利用 while(1) 來表示: <?php while (true ) { print "In loop!\n" ; } ?> <?php while (1 ) { print "In loop!\n" ; } ?>   或者用 for 來表示: <?php for (;;) { print "In loop!\n" ; } ?> 建議千萬別開網頁,因為會打不開,改用cmd來執行吧

PHP 教學 - 可變變數用法

可變變數的名稱是其他變數的值,是變化的,在某些情況下是可以讓我們少寫一些程式碼的! <?php $today="Sunday"; $$today="星期日"; echo "{$today}={$$today}"; ?> 以上範例 「$$today=”星期日”;」這個變數沒有真正的名稱, 其名稱取決於$today的值,所以當$today的值等於「Sunday」時, 「$$today」的真正名稱就是「$$Sunday」,換句話說實際上就是指定$$Sunday=”星期日” 的意思。 以下例子讓我們更清楚使用時間及差別: <?php $Sunday="星期日"; $Monday="星期一"; $Tuesday="星期二"; $Wednesday="星期三"; $Thursday="星期四"; $Friday="星期五"; $Saturday="星期六"; $today=date("l"); if($today=="Sunday"){ echo "今天是{$Sunday}"; }elseif($today=="Monday"){ echo "今天是{$Monday}"; }elseif($today=="Tuesday"){ echo "今天是{$Tuesday}"; }elseif($today=="Wednesday"){ echo "今天是{$Wednesday}"; }elseif($today=="Thursday"){ echo "今天是{$Thursday}"; }elseif($today=="Friday"){ echo "今天是{$Friday}"; }elseif($today=="Satu...

PHP 教學 - 有趣的 google map api 應用

圖片
php 如何應用 google map api 呢? 首先應該在 mysql 中建立欄位 CREATE TABLE wholocations (   id int(11) NOT NULL auto_increment,   lat decimal(10,6) NOT NULL default '0.000000',   lon decimal(10,6) NOT NULL default '0.000000',   description varchar(255) NOT NULL default '',   PRIMARY KEY  (id) ) ; 然後記得去建立幾筆資料 去申請 google map api key <html> <head> <title>字串</title> <script src="http://maps.google.com/maps?file=api&v=2&key=你的key" type="text/javascript"></script> </head>     <body>     <div style ="text-align:center;">     <p><strong>gmap</strong></p>         <div id="map" style="width: 800px; height: 600px;"></div>     <script type="text/javascript">         var map = new GMap2(document.getElementById("map"));         map.addControl(new GLargeMapContr...

xampp 常用的設定

xampp 設定 – php.ini 翻譯與設定 修改 httpd.conf DocumentRoot “C:/xampp/htdocs" 改為 DocumentRoot “C:/xampp/htdocs/www" 我習慣用www包起來我寫的專案 若有固定IP要開放伺服器外連,修改httpd-xampp.conf , <LocationMatch “^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))"> #Order deny,allow Allow from all #Deny from all #Allow from ::1 127.0.0.0/8 #fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 #fe80::/10 169.254.0.0/16#ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </LocationMatch> 允許所有人使用。 修改php.ini (PHP 7 適用) short_open_tag = On open_basedir = 請指定 max_execution_time = 60; 每個腳本的最大執行時間, 按秒計. max_input_time = 60 ; 每個腳本的最大讀取資料時間, 按秒計. memory_limit = 800M; 一個腳本可使用記憶體的最大值 display_errors = On 遇到 PHP 語法解析錯誤,會顯示錯誤訊息。建議正式環境改為 Off post_max_size = 200M default_charset = “UTF-8″ max_input_vars = 100000 指定每次傳送最大的表單數量,如多少比筆<input type=”text”> 或註解掉 upload_max_filesize = 200M 允許上傳檔案的最大值. date.timezone = Asia/Taipei php.ini 翻譯 http://mic1491.pixnet.net/blog/post/30159855-php.i...

usb隨身碟容量變小的解決方法

usb隨身碟容量變小的解決方法 當使用隨身碟或sd卡時, 如果使用某些格式化工具, 使得容量改變, 例如原來8G變成2G, 如何恢復成原來的8G呢? 這裡提供一個簡單的方法: 在windows 7 (windows xp不支援列出usb裝置), 在命令列模式, 輸入執行 diskpart 出現 diskpart 的大於符號, 再輸入 : list disk  這時會列出, 所有掛在系統上的磁碟, 包含usb隨身碟(u盤)或sd卡, 如果是使用windows xp,將無法列出隨身碟。如果您想恢復容量的隨身碟在第2個裝置(每個磁碟, 隨身碟, u盤, sd卡, mini sd卡,任何儲存裝置其前均會有一代號), 請輸入: select disk 2 確定選擇到變小的隨身碟後, 再輸入: clean  這時會清除隨身碟的資料(請誤必小心操作, 以免清除到別的磁碟或usb碟的資料) 再輸入: create partition primary  會在隨身碟建立一個主要分割區 回到windows系統, 對此容量變小的usb隨身碟, 加以格式化, 完成後, 就可以發現原來縮小減少的的容量, 已經恢復正常大小了。 這裡還找到一篇能恢復隨身碟容量的相關文章, 還未及細看,如果有朋友依上面方法仍不能解決usb空間縮小的問題,可自行參考: http://www.trishtech.com/2011/06/restore-usb-flash-disk-back-to-full-capacity/

Python 研究 - 常見的程式錯誤訊息

這裏列出了常見的的一些程序 crash 的運行時錯誤。 1)忘記在 if , elif , else , for , while , class ,def 聲明末尾添加 :(導致 “SyntaxError :invalid syntax”) 該錯誤將發生在類似如下代碼中: if spam == 42     print('Hello!') 2)使用 = 而不是 ==(導致“SyntaxError: invalid syntax”)  = 是賦值操作符而 == 是等於比較操作。該錯誤發生在如下代碼中: if spam = 42:     print('Hello!') 3)錯誤的使用縮進量。(導致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”) 記住縮進增加只用在以:結束的語句之後,而之後必須恢覆到之前的縮進格式。該錯誤發生在如下代碼中: print('Hello!')     print('Howdy!') 或者: if spam == 42:     print('Hello!')   print('Howdy!') 或者: if spam == 42: print('Hello!') 4)在 for 循環語句中忘記調用 len() (導致“TypeError: 'list' object cannot be interpreted as an integer”) 通常你想要通過索引來?代一個list或者string的元素,這需要調用 range() 函數。要記得返回len 值而不是返回這個列表。 該錯誤發生在如下代碼中: spam = ['cat', 'dog', 'mouse'] for i in range(spam):     print(spam...

Python 研究 - pyserial 用法

python中pyserial模塊使用方法 一、概述     pyserial模塊封裝了對串口的訪問。 二、特性     在支持的平台上有統一的接口。     通過python屬性訪問串口設置。     支持不同的字節大小、停止位、校驗位和流控設置。     可以有或者沒有接收超時。     類似文件的API,例如read和write,也支持readline等。     支持二進制傳輸,沒有null消除,沒有cr-lf轉換。 三、系統要求     python 2.3及以上版本,包括py3k。 四、使用方法和實例 1、導入pyserial模塊 import serial 2、打開串行口 // 打開串口0, 9600,8N1,連接超時0.5秒 import serial ser=serial.Serial(" /dev/ttyUSB0", 9600, timeout= 0.5 ) #使用USB連接串行口 ser=serial.Serial(" /dev/ttyAMA0", 9600, timeout= 0.5 ) #使用樹莓派的GPIO口連接串行口 ser=serial.Serial(1 , 9600, timeout= 0.5 ) #winsows系統使用com1口連接串行口 ser=serial.Serial("com1" , 9600, timeout= 0.5 ) #winsows系統使用com1口連接串行口 ser=serial.Serial(" /dev/ttyS1 " , 9600, timeout= 0.5 ) #Linux系統使用com1口連接串行口 print ser.name #打印設備名稱 print ser.port #打印設備名 ser.open ()  #打開端口 s = ser.read(10) #從端口讀10個字節 ser.write("hello") #向端口些數據 ser.close() #關閉端口         data = ser....

PHP 教學 - windows 7 環境下 xampp 透過php控制arduino

圖片
首先先把arduino接上usb跟電腦相連     const int ledPin = 13; // the pin that the LED int incomingByte;      // a variable to read incoming serial data into   void setup() {   // initialize serial communication:   Serial.begin(9600);   // initialize the LED pin as an output:   pinMode(ledPin, OUTPUT); }   void loop() {   // see if there's incoming serial data:   if (Serial.available() > 0) {     // read the oldest byte in the serial buffer:     incomingByte = Serial.read();     // if it's a capital H (ASCII 72), turn on the LED:     if (incomingByte == 'H') {       digitalWrite(ledPin, HIGH);     }     // if it's an L (ASCII 76) turn off the LED:     if (incomingByte == 'L') {       digitalWrite(ledPin, LOW);     }   } }...

python 研究-常用的第三方函式庫及工具參考

一些有用的Python函式庫列表 本篇轉載 http://blog.ez2learn.com/2010/04/24/useful-python-libraries/ 僅作為個人筆記參考 Python有豐富的第三方函式庫或是工具,我一直想說要整理一篇列表,今天找了一點時間整理了一下我所知道的或是用過的 視窗GUI開發     wxPython 跨平臺的GUI開發函式庫,由wxWidget移植而來,特點是原生介面     PyQT 同樣也是著名的跨平臺GUI函式庫,由QT移植而來,可惜的是它是在於GPL條款下,商業用途需要另外買授權     PySide 因為PyQT為GPL授權,所以有人另外出來搞了另一套QT的移植,它是在LGPL條款下,因此商業軟體也適合     PyGTK GTK的Python移植版 遊戲開發     pygame 一款簡單的2D遊戲開發函式庫,主要是基於SDL     Python-Ogre 著名Open source 3D遊戲引擎Ogre的Python移植版本     pyglet 一款跨平台的多媒體函式庫     PyOpenGL OpenGL的python移植     Python-Hge 我寫的HGE 2d遊戲引擎的Python移植版,大致上還算可用狀態,有些部份還沒移植完全 網頁開發     Flask 基於Werkzeug,以輕量為主要特色的網頁框架,簡單易用,沒有太大負擔,讓人喜愛的一款容易上手的網頁框架     Werkzeug 不算是網頁框架,它提供了開發WSGI常會用到的功能,不喜歡什麼都已經準備好的網頁框架,又不想重頭寫起可以試試看     Pyramid 這是結合了Pylons和BFG之後的新一代網頁框架,有完備的文件和號稱100%測試覆蓋率著稱     TurboGears 集大成的網頁開發框架,它是組合各種合適現成的組件而成的網頁框架,因...

python 研究-assert 用法

python assert 斷言詳細用法格式 使用 assert 斷言是學習 python 一個非常好的習慣, python assert 斷言句語格式及用法很簡單。在沒完善一個程式之前,我們不知道程式在哪裡會出錯,與其讓它在執行最崩潰,不如在出現錯誤條件時就崩潰,這時候就需要 assert 斷言的幫助。本文主要是講 assert 斷言的基礎知識。 python assert 断言用法 python assert 斷言的作用 python assert 斷言是聲明其布爾值必須為真的判定,如果發生異常就說明表達示為假。可以理解 assert 斷言語句為 raise-if-not ,用來測試表示式,其返回值為假,就會觸發異常。 assert 斷言語句的語法格式 assert python 怎麼用? expression assert 表達式 下面做一些 assert 用法的語句供參考: assert 1==1 assert 2+2==2*2 assert len(['my boy',12])<10 assert range(4)==[0,1,2,3] 如何為 assert 斷言語句增加異常參數 assert 的異常參數,其實就是在斷言表達式後增加字串訊息,用來解釋斷言並更好的知道是哪裡出了問題。格式如下: assert expression [, arguments] assert 表達式 [, 參數 ] 玩蛇網文章,轉載請註明出處和來源網址: http://www.iplaypython.com/jinjie/assert.html