2012年9月18日 星期二

Python 中文顯示

1.測試環境: eclipse+pydev+python2.7
2.依 PEP 0263 說明,欲顯示多國語言(例如:中文),需在該原始碼檔案第一或第二行加入以下語法:
# coding = [encoding name]

#!/usr/bin/python
# -*- coding: [encoding name] -*-
其中[encoding name]是所要顯示的編碼,如用 UTF-8 就顯示為 UTF-8 ,如不沒加上,或者不是加在第一或第二行,則會報錯,例如以下程式:
'''
Created on 2012/9/12
Encode test
@author: Andy Liu
'''
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
    print('中文測試')
執行結果如下:
SyntaxError: Non-ASCII character '\xe4' in file C:\learnpython\encodetest.py on line 8,  but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
如依規定加於第一或第二行,如下程式碼所示:
# -*- coding: UTF-8 -*-
'''
Created on 2012/9/12
Encode test
@author: Andy Liu
'''
if __name__ == '__main__':
    print('中文測試')
執行結果如下:
中文測試

2012年9月13日 星期四

Python List , Set , Dictionary , Tuple Operation Practice

'''
Created on 2012/9/12
Fourth Python program - List , Set , Dictionary , Tuple
@author: AJ0549
'''

if __name__ == '__main__':
    
    list1=[] # create empty list
    list1.append(6) # add element
    list1.append("String") # add element
    list1.append(True) # add element
    print("list:",list1,list1[0:2])
    list2=[[0,1,2],[5,4,3],[1,3,4]] # two array list
    print("list:",list2,list2[0:2])
    list3=list2[0:2] #extrat element to create new list
    print("list:",list3[1] in list2,list3 in list2)
    list2.sort() # list sort (same type)
    print(list2)
    
    set1={6,"string",True} #create set
    set2={6,2,3}
    print("set:",True in set1)
    print("set:",set1|set2) #Union operator
    print("set:",set1&set2) #Intersection operation
    print("set:",set1-set2) #Difference operation
    print("set:",set1^set2) #XOR operation
    print("set:",set1>set2,set2<set1) #sub set test
    set1.add("LOL") # add element
    print("set:",set1)
    set3=set() #create empty set
    set3.add(6)
    print("set:",set3,set1<set3,set1>set3)

    pass1 = {"A":1,"B":2} # create dictionary (same as dict)
    pass2=dict(A=1,B=2)                       
    print("dict:",pass1,pass2)
    pass1["A"]=9
    print("dict:",pass1["A"])
    del(pass1["A"]) #del elements
    print("dict:",pass1)
    pass1.update({"A":6})
    print("dict:",pass1)
    print("dict:",pass1.items(),pass1.keys(),pass1.values())
    
    tup1=(1,2,3,4) # create tuple
    print("tuple:",tup1,tup1[2])
    tup2=([1,2],[3,4]) #create array tuple
    print("tuple:",tup2,tup2[0],tup2[0][1])
    tup2[0][1]=9
    print("tuple:",tup2)
    try:
        tup2[0]=[7,8]
    except:
        print("tuple:","Tuple is Immutable")
執行後
('list:', [6, 'String', True], [6, 'String'])
('list:', [[0, 1, 2], [5, 4, 3], [1, 3, 4]], [[0, 1, 2], [5, 4, 3]])
('list:', True, False)
[[0, 1, 2], [1, 3, 4], [5, 4, 3]]
('set:', True)
('set:', set([True, 2, 3, 'string', 6]))
('set:', set([6]))
('set:', set([True, 'string']))
('set:', set([True, 2, 3, 'string']))
('set:', False, False)
('set:', set(['LOL', True, 'string', 6]))
('set:', set([6]), False, True)
('dict:', {'A': 1, 'B': 2}, {'A': 1, 'B': 2})
('dict:', 9)
('dict:', {'B': 2})
('dict:', {'A': 6, 'B': 2})
('dict:', [('A', 6), ('B', 2)], ['A', 'B'], [6, 2])
('tuple:', (1, 2, 3, 4), 3)
('tuple:', ([1, 2], [3, 4]), [1, 2], 2)
('tuple:', ([1, 9], [3, 4]))
('tuple:', 'Tuple is Immutable')

2012年9月11日 星期二

流傳已久的故事

      有一個工程師在一家公司工作30年,退休了,他對該公司的機器及產品瞭如指掌。幾年後,該公司的一套機器故障,全公司的人都沒法找出問題來。絕望中,他們只好找這位退休工程師。這位工程師看了一個小時之後,工程師從上衣口袋拿出一枝粉筆,用粉筆在一個零件上畫了一個大叉叉。公司把零件換了,機器操作正常。但是不久公司收到一張十萬元的帳單,是這位退休工程師的收費。公司老闆火大了,認為一個小時不值這麼多錢,就要求送一張明細表。 

這位退休工程師的回函是: 
粉筆        $ 1 
知道在哪裡畫粉筆  $ 99,999
 
       一些老闆經常忽視知識的累積,等到一些Key man離職或退休,才驚覺原來這個人竟然掌握了公司的命脈。原因是這些老闆不知道把"個人知識"轉化成 "組織知識",結果這些人之於公司就像麥可喬登之於芝加哥公牛隊一般,一離開,公司也差不多要垮了。 老闆要懂得尊重專業,一方面也要將公司營運規則化,透明化,同樣地,員工要累積專業,提升價值,才能互利互助。

問題是現在大環境是 官大學問大,嘴炮淹死人

2012年9月7日 星期五

一念地獄

一念天堂,一念地獄。
從心而起,從行而現。
心寬海闊,劃心則牢。
人生百態,苦樂皆有。
本是常理,笑笑則過。
伏惟此生,无愧天地。
                             
                              101.9.8 12:30 有感

2012年9月6日 星期四

當用 IE 不能開 Webmail 附件檔的解決辦法

         今天老爸的電腦突然不能直接開啟 Hinet Webmail 上郵件的附件檔,只能用另存的方式開啟,經用 "Webmail can't open attachments. Access Denial" 關鍵字 google 找到這篇文章,他提到的方法很簡單,就是去下載 CCleaner,執行清理後,再開啟 Webmail 就可以了,比起修改 regedit 、重設 IE 、清除暫存等方式都有效又快速的多(以上方法皆失敗)。

2012年9月5日 星期三

Android 手機上執行 Python

      在 Andorid 手機上要執行 Python 可使用 Google Project 的 SL4A(Scripting Layer for Android) 專案,該專案允許你在 Andorid 手機上執行 Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl,以及shell Script,並且可呼叫 Android 手機的 API。目前此程式在 Google Play 並找不到,需至該專案網頁下載  sl4a_r6.apk  及 PythonForAndroid_r4.apk  至 Andorid 手機上安裝(先需至控制台勾選允許不明來源 APP 安裝選項) ,安裝完後,程式集會出現 Python for Andorid  及 SL4A 兩個程式,如下圖所示:
         先執行 Python for Android ,後按最上方 Install 按鍵來安裝 Python 解譯器,安就完後下方 Installed Versions 列會顯示出所安裝的版本,其後如果有其他 Module 功能需求,可選下方 Browse Modules 至該專案網頁下載對應的 Modules 後,再選 Import Modules 安裝,如要移除可以選擇 Uninstall Module 移除。
       安裝完 Python 解譯器後,執行 SL4A 會出現在手機上有的 Python Script ,在此我們點選經典的  Hello_world.py ,會跳出一排  Icon ,由左到右分別是 執行、設定、編輯、刪除及使用外部程式編輯等選項,在此我們選第一個執行,會先跳出"Hello,Andorid!"字樣後,在終端機介面出現 "Hello world!" 字樣。
       在此我們可以選擇編輯該檔案來看其內容,可看到第一行 import android ,是宣告匯入 Android 模組,才可以使用 Android 手機的 API 功能,而在其他的範例裡我們可以看到,其有實作藍芽通訊,捉取天氣資訊及回報時間等功能,至於更多的功能請參見專案網頁說明,在此不多做介紹。
import android 
dorid = andorid.Andorid()
droid.makeToast('Hello,Android!')
print 'Hello World!'

2012年9月4日 星期二

Python Numeral Operation Practice

'''
Created on 2012/9/4
Third Python program - numeral
@author: Andy Liu
'''
import math
if __name__ == '__main__':
    print(3) #int
    print(math.pi,int(math.pi)) #real
    n=1.1+2.2j #complex
    p=n+2 #complex add 
    print(n,n.real,n.imag) #complex,real,imagine
    print(p)
    # ??
    print(1.0-0.8,(1.0-0.8),(1.0-0.8).__repr__())# repr function
    print(1.0-0.8,(1.0-0.8))
    import decimal
    print((decimal.Decimal('1.0')-decimal.Decimal('0.8')))
    print((decimal.Decimal(1.0)-decimal.Decimal(0.8)))
    print(1.0-0.8)
    print((1.0-0.8))   
    # ??
    print(oct(10),hex(10),bin(10))#numeral conversion
    print(2**8)
    print(10/3,10//3,10%3)
執行結果
3
(3.141592653589793, 3)
((1.1+2.2j), 1.1, 2.2)
(3.1+2.2j)
(0.19999999999999996, 0.19999999999999996, '0.19999999999999996')
(0.19999999999999996, 0.19999999999999996)
0.2
0.1999999999999999555910790150
0.2
0.2
('012', '0xa', '0b1010')
256
(3, 3, 1)

2012年9月3日 星期一

Python String Operation Practice

'''
Created on 2012/8/31
Second Python program - String 
@author: Andy Liu
'''

if __name__ == '__main__': 
    str1='Hello '
    str2="World !"
    str3=str1+str2 #combine
    str4=str1*2 #double
    str5=str4.replace(" Hello"," World !") #replace string
    print(str1)
    print(str2)
    print(str3)
    print(str4)
    print(str5)
    print "Hello" in str4
    print "!" in str4
    print(len(str4)) #string length
    print(str3.split(" ")) #split String
    print(dir(str1)) # string type character
    pass
執行結果
Hello 
World !
Hello World !
Hello Hello 
Hello World ! 
True
False
12
['Hello', 'World', '!']
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

2012年9月2日 星期日

康乃爾筆記法

康乃爾筆記法是由康乃爾大學的名譽教授 Walter Pauk 所創,整個頁面(參見下圖)可以分為三大部分,其中 Note Talking Area 是做筆記的地方,而 Cue Column 是讓你做整理、回顧與復習用的地方,Summaries 則是總結的地方,其本上由整個格式設計已預留好的空白,讓你能夠反復思考註記,且易於回顧,增進學習的效果。基本上康乃爾筆記格式可拿任一筆記本自行畫出,如果覺得的太麻煩,大創(DAISO)也有賣現成的筆記本,如果想要自已印出來使用,可以到 American Digest 網站上下載,網站上有三個檔案:



1. CornellNoteSystem.pdf :說明如何使用康乃爾筆記法,附有範例。




2. CornellNotesPlain.pdf:為康乃爾筆記法空白格式。



3.CornellNotesGraph.pdf :為康乃爾筆記法背景為方格圖格式,便於筆記做圖用。

用紀律圓夢-村田和雄

        以七十歲高齡, 經歷孤獨的九十六天航程 ,挑戰不靠岸隻身航行橫越太平洋,在這本書中,作者由夢想的起始,及其生涯的歷程,出發前的準備,航行的歷程,與最後的心得,詳細敘述,雖有些過細,但從中我們可以看到,夢想的立定與達成,不是自然而然發生的,是需要人親自去實行加以實現的,就如同書中所講的,實現夢想需要四個要素一意志、健康、金錢、時間。夢想的實現在立定了之後,更需要確實的執行,由書中我們看到的,作者於出發前的準備與多次演練,與實際執行時遇到狀況的臨機應變,這是經過慎密的事前準備,方才可以達到的。對於作者我們能說,能認真完成一件事,是值得我們的尊敬。

以下到出書中自已有感的句子:

P34 事情該做的時侯就要做,才能產生最大的效率。
P43 回首這段過程,經過眾人皆認為稀有的冒險階段,再進入需要某種程度的投資階段時,四週便出現逃避責任與嫉妒混雜的反對聲浪。我很努力工作,不過有百分之七十的精力似乎是用在避免這個主題遭到破壞。
P47 如果你想開創出新的東西,就要有所覺悟,你會製造70%的敵人,但是當比例上升到100%時,不見得那就是正確的指標,這也是我學到的智慧。
P51 報告做得再怎麼好看,工作現場卻會老實地呈現所有的問題。
P57 所謂的改變就是改變工廠中的文化。
P59 實現夢想需要四個要素一意志、健康、金錢、時間。

寓言一則

傍晚,一只羊獨自在山坡上玩,突然從樹木中竄出一只狼來,要吃羊

羊跳起來,拼命用角抵抗,並大聲向朋友們求救。
牛在樹叢中向這個地方望了一眼,發現是狼,跑走了;
馬低頭一看,發現是狼,一溜煙跑了;
驢停下腳步,發現是狼,悄悄溜下山坡;
豬經過這裡,發現是狼,衝下山坡;
兔子一聽,更是一箭一般離去。

山下的狗聽見羊的呼喊,急忙奔上坡來,從草叢中閃出,
咬住了狼的脖子,狼疼得直叫喚,趁狗換氣時,愴惶逃走了。

回到家,朋友都來了,
牛說:你怎麼不告訴我?我的角可以剜出狼的腸子。
馬說:你怎麼不告訴我?我的蹄子能踢碎狼的腦袋。
驢說:你怎麼不告訴我?我一聲吼叫,嚇破狼的膽。
豬說:你怎麼不告訴我?我用嘴一拱,就讓它摔下山去。
兔子說:你怎麼不告訴我?我跑得快,可以傳信呀。
在這鬧嚷嚷的一群中,唯獨沒有狗。

真正的友誼,不是花言巧語,而是關鍵時候拉你的那只手。那些整日圍在你身邊,讓你有些許小歡喜的朋友,不一定是真正的朋友。而那些看似遠離,實際上時刻關注著你的人,在你快樂的時候,不去奉承你;你在你需要的時候,默默為你做事的人,才是真正的朋友