2011年11月7日 星期一

Python 教學資料總匯 PDF

python下载:

http://python.org/download/


资源下载:

Programming Python, 2nd Edition (O'Reilly)

http://www.osbbs.com/dl/Programming Python, 2nd Edition (O'Reilly).chm

很全很经典了python学习入门资料

OReilly - Learning Python:

http://www.osbbs.com/dl/OReilly - Learning Python.chm

OReilly - Python Cookbook.chm:

http://www.osbbs.com/dl/OReilly - Python Cookbook.chm

经典中的经典,我的最爱.

OReilly - Python Standard Library.chm

http://www.osbbs.com/dl/OReilly - Python Standard Library.chm

python标准库说明

thinking in python.chm

http://www.osbbs.com/dl/thinking in python.chm

也还不错~我看得比较投入

PythonInNutshell.zip

http://www.osbbs.com/dl/PythonInNutshell.zip

传说中的经典,不过一直没来得及看.

sockets.pdf

http://www.osbbs.com/dl/sockets.pdf

python的socket编程

diveintopython-html-5.4.zip

http://www.osbbs.com/dl/diveintopython-html-5.4.zip

《深入python》

html-2.3.4.zip

http://www.osbbs.com/dl/html-2.3.4.zip

python2.3.4的手册

LovePython.zip

http://www.osbbs.com/dl/LovePython.zip

Addison-Wesley Python Programming with the Java Class Libraries.chm

http://www.osbbs.com/dl/Addison-Wesley Python Programming with the Java Class Libraries.chm

OReilly - Python Programming on Win32.chm

http://www.osbbs.com/dl/OReilly - Python Programming on Win32.chm

python的win32编程讲解

Win32.zip

http://www.osbbs.com/dl/Win32.zip

上面一书的源码

python2.3tut.zip

http://www.osbbs.com/dl/python2.3tut.zip

O'Reilly - Python & XML.rar

http://www.osbbs.com/dl/O'Reilly - Python & XML.rar

cjkcodecs-1.0.3.zip

http://www.osbbs.com/dl/cjkcodecs-1.0.3.zip

支持东方文字

gb2312.zip

http://www.osbbs.com/dl/gb2312.zip

CANVAS3_VivianLi.rar

http://www.osbbs.com/dl/CANVAS3_VivianLi.rar

python写的安全检测程序

NeoBoard-1.1.tar.gz

http://www.osbbs.com/dl/NeoBoard-1.1.tar.gz

python写的论坛程序

py2exe-0.4.2.win32-py2.3.exe

http://www.osbbs.com/dl/py2exe-0.4.2.win32-py2.3.exe

将python脚本编译为.exe

PIL-1.1.4.win32-py2.3.exe

http://www.osbbs.com/dl/PIL-1.1.4.win32-py2.3.exe

图象库

upload.zip

http://www.osbbs.com/dl/upload.zip

python写上传程序

tkinter.chm

http://www.osbbs.com/dl/tkinter.chm

Oedipus-0.10.tar.gz

http://www.osbbs.com/dl/Oedipus-0.10.tar.gz

中文python学习资料:

Python 語言進階.pdf

http://www.osbbs.com/dl/Python 語言進階.pdf

皮大庆的Python学习笔记.pdf

http://www.osbbs.com/dl/皮大庆的Python学习笔记.pdf

王纯业的Python学习笔记.pdf

http://www.osbbs.com/dl/王纯业的Python学习笔记.pdf

葉平的Python教程.pdf

http://www.osbbs.com/dl/葉平的Python教程.pdf



學習 Python 的網頁資源

如果你是 Python 初學者,可以從下列的 Python 學習資源列表挑選幾篇來閱讀,這些資源都可在網路上免費取得:
  • Python 簡介 -- Python.org 網站上的教學列表。 http://www.python.org/doc/Intros.html
  • Python 教學手冊 -- Guido van Rossum 所撰寫的 Python 教學手冊。 http://www.python.org/doc/tut/
  • 編程學習手冊 -- Alan Gauld 所撰寫的編程教學手冊,除了強調 Python 語言之外,也包含其他程式語言。 http://www.freenetpages.co.uk/hp/alan.gauld/
  • 電腦科學家是這樣想的 (Python 版本) -- http://www.ibiblio.org/obp/thinkCSpy/
  • 深入學習 Python -- 針對有經驗程式人員的免費教學手冊。 http://diveintopython.org/

學習 Python 的四本好書

坊間已出現越來越多 Python 書籍,不過,中文版本的還不算多,有賴更多社群好手投入。
  • The Quick Python Book -- by Daryl D. Harms, Kenneth McDonald, Manning Publications Company 2000
  • Practical Python -- by Magnus Lie Hetland, Apress 2002
  • Text Processing in Python -- by David Mertz, Addison Wesley 2003

Python 的特色

    和其他知名的手稿語言 (script language) 相比,Python 具有下列特色:
  • 物件導向式 (Object Oriented)
  • 直譯式、交談式 (Interpreted, Interactive)
  • 跨平台 (Cross Platform)
  • 容易安裝 (Easy Installing)
  • 易學易用 (Easy Learning)
  • 語法結構清晰 (Clear Syntax and Structure)
  • 延伸與內嵌 (Extended and Embedded)
  • 開放源碼 (Open Source)
說明 網址

Python 資源列表

  • Python 主網站 http://www.python.org/
  • wxPython http://www.wxpython.org/
  • PyGTK: GTK+ for Python http://www.pygtk.org/
  • PyQt http://www.riverbankcomputing.co.uk/pyqt/
  • Vaults of Parnassus: Python Resources http://www.vex.net/parnassus/
  • PyGame http://www.pygame.org/
  • 葉平老師的 PythonCourse Wiki http://wiki.scicos.net/PythonCourse

Zope 資源列表

  • Zope.org http://www.zope.org/
  • Zope Magazine http://www.zopemag.com/
  • Content Management Framework http://cmf.zope.org/
  • Plone http://www.plone.org/
  • 全國中小學校園自由軟體應用諮詢中心 http://www.ossacc.org/
  • ShareTone Project http://www.sharetone.org/
  • LiveZope Project http://zope.org/Members/cchuang/LiveZope-0.1.2_released
  • Zope China http://www.zopechina.com/
  • Zope Newbies http://www.zopenewbies.net/
  • ZopeLabs http://www.zopelabs.com/
  • Zettai.net http://www.zettai.net/
  • WingIDE http://www.wingide.com/
  • Beehive http://www.beehive-eu.com/
  • tcchou http://blog.tcchou.org/
註1: Zope 3 UI Sprint
http://www.zope-europe.org/sl2003/uisprint
註2: Python 授權條款的細節
http://www.python.org/psf/license.html
註3: Python 於教育領域之推廣應用
http://www.python.org/sigs/edu-sig/
註4: 全國中小學校園自由軟體應用諮詢中心 PyZope 通信論壇
http://list.ossacc.org/mailman/listinfo/ossacc-pyzope
註5: 在 Pythonology 網站上整理有成功案例
http://www.pythonology.com/success
註6: O’Reilly 的 "Open Source Goes to COMDEX" 投票競賽結果
http://www.oreillynet.com/contest/comdex/


2011年11月4日 星期五

Python 模組:StringIO 將內存文件寫入內容與重導向

File: stringio-example-3.py
import StringIO
import string, sys
stdout = sys.stdout
sys.stdout = file = StringIO.StringIO()
print """
According to Gbaya folktales, trickery and guile
are the best ways to defeat the python, king of
snakes, which was hatched from a dragon at the
world's start. -- National Geographic, May 1997
"""
sys.stdout = stdout
print string.upper(file.getvalue())
ACCORDING TO GBAYA FOLKTALES, TRICKERY AND GUILE
ARE THE BEST WAYS TO DEFEAT THE PYTHON, KING OF
SNAKES, WHICH WAS HATCHED FROM A DRAGON AT THE
WORLD'S START. -- NATIONAL GEOGRAPHIC, MAY 1997




進階用法:
使用cStringIO效能較佳

你可以使用一個小技巧在 cStringIO 不可用時啟用 StringIO 模組


File: cstringio-example-2.py
try:
    import cStringIO
    StringIO = cStringIO
except ImportError:
    import StringIO
print StringIO

2011年11月3日 星期四

如何成為Python (內有許多好文章的連結)

【觀點】如何成為Python高手

2011-06-23 09:06 | 2800次閱讀 | 來源:外刊IT評論 【已有5條評論】發表評論
關鍵詞:Python  | 作者:外刊IT評論 | 收藏這篇資訊
導讀:本文是從《How to become a proficient Python programmer 》這篇文章翻譯而來。譯文來自外刊IT評論《如何成為Python高手 》。
內容如下:
這篇文章主要是對我收集的一些文章的摘要。因為已經有很多比我有才華的人寫出了大量關於如何成為優秀Python程序員的好文章。
我的總結主要集中在四個基本題目上:函數式編程,性能,測試,編碼規範。如果一個程序員能將這四個方面的內容知識都吸收消化,那他/她不管怎樣都會有巨大的收穫。
函數式編程
命令式的編程風格已經成為事實上的標準。命令式編程的程序是由一些描述狀態轉變的語句組成。雖然有時候這種編程方式十分的有效,但有時也不盡如此(比如復雜性)——而且,相對於聲明式編程方式,它可能會顯得不是很直觀。
如果你不明白我究竟是在說什麼,這很正常。這裡有一些文章能讓你腦袋開竅。但你要注意,這些文章有點像《駭客帝國》裡的紅色藥丸——一旦你嘗試過了函數式編程,你就永遠不會回頭了。
性能
你會看到有如此多的討論都在批評這些“腳本語言”(Python,Ruby)是如何的性能低下,可是你卻經常的容易忽略這樣的事實:是程序員使用的算法導致了程序這樣拙劣的表現。
這裡有一些非常好的文章,能讓你知道Python的運行時性能表現的細節詳情,你會發現,通過這些精煉而且有趣的語言,你也能寫出高性能的應用程序。而且,當你的老闆質疑Python的性能時,你別忘了告訴他,這世界上第二大的搜索引擎就是用Python寫成的——它叫做Youtube(參考Python摘錄  )
測試
如今在計算機科學界,測試可能是一個最讓人不知所措的主題了。有些程序員能真正的理解它,十分重視TDD(測試驅動開發)和它的後繼者BDD(行為驅動開發)。而另外一些根本不接受,認為這是浪費時間。那麼,我現在將告訴你:如果你不曾開始使用TDD/BDD,那你錯過了很多最好的東西!
這並不只是說引入了一種技術,可以替換你的公司裡那種通過愚蠢的手工點擊測試應用程序的原始發布管理制度,更重要的是,它是一種能夠讓你深入理解你自己的業務領域的工具——真正的你需要的、你想要的攻克問題、處理問題的方式。如果你還沒有這樣做,請試一下。下面的這些文章將會給你一些提示:
編碼規範
並非所有的代碼生來平等。有些代碼可以被另外的任何一個好的程序員讀懂和修改。但有些卻只能被讀,而且只能被代碼的原始作者修改——而且這也只是在他或她寫出了這代碼的幾小時內可以。為什麼會這樣?因為沒有經過代碼測試(上面說的)和缺乏正確的編程規範。
下面的文章給你描述了一個最小的應該遵守的規範合集。如果按照這些指導原則,你將能編寫出更簡潔和漂亮的代碼。作為附加效應,你的程序會變得可讀性更好,更容易的被你和任何其他人修改。
那就去傳閱這這些資料吧。從坐在你身邊的人開始。也許在下一次程序員沙龍或編程大會的時候,也已經成為一名Python編程高手了!
祝你學習旅途順利。
如果你喜歡這些文章,請在微博上頂一下,讓其他人也知道。
文章來源:外刊IT評論 

用python程式計算一次請領和分次請領的金額差距 評估何者較佳



額外的參考資源
http://www.masterhsiao.com.tw/Retirement/AnnuityOfLI2/AnnuityOfLI2.htm#calculation


#compareOneGetAndContiGet.py
year =8
month = year *12
annual=13020*month
print (annual)




oneGet = 1080000
rate = 0.32/100


for mon in range(month) :
    print("[mon]",mon," ","[year]",(mon//12)+1,"\t",oneGet*(1+rate)**mon)


diff = 1462980 - annual  #金錢 14629080為一次請領的金額
print ("兩法的金額差距:",diff)
print ("一次請領的方法需多活",diff//13020,"個月才可賺得比較多")  #金錢13020為分次提領的金額


------------輸出結果----------------






1249920
[mon] 0   [year] 1 1080000.0
[mon] 1   [year] 1 1083456.0
[mon] 2   [year] 1 1086923.0592
[mon] 3   [year] 1 1090401.2129894402
[mon] 4   [year] 1 1093890.4968710067
[mon] 5   [year] 1 1097390.946460994
[mon] 6   [year] 1 1100902.597489669
[mon] 7   [year] 1 1104425.4858016362
[mon] 8   [year] 1 1107959.6473562014
[mon] 9   [year] 1 1111505.1182277417
[mon] 10   [year] 1 1115061.9346060704
[mon] 11   [year] 1 1118630.1327968098
[mon] 12   [year] 2 1122209.7492217598
[mon] 13   [year] 2 1125800.8204192696
[mon] 14   [year] 2 1129403.3830446112
[mon] 15   [year] 2 1133017.4738703542
[mon] 16   [year] 2 1136643.1297867394
[mon] 17   [year] 2 1140280.3878020572
[mon] 18   [year] 2 1143929.2850430238
[mon] 19   [year] 2 1147589.8587551615
[mon] 20   [year] 2 1151262.1463031783
[mon] 21   [year] 2 1154946.1851713485
[mon] 22   [year] 2 1158642.0129638969
[mon] 23   [year] 2 1162349.6674053816
[mon] 24   [year] 3 1166069.1863410787
[mon] 25   [year] 3 1169800.6077373703
[mon] 26   [year] 3 1173543.96968213
[mon] 27   [year] 3 1177299.3103851129
[mon] 28   [year] 3 1181066.6681783455
[mon] 29   [year] 3 1184846.0815165162
[mon] 30   [year] 3 1188637.5889773692
[mon] 31   [year] 3 1192441.2292620968
[mon] 32   [year] 3 1196257.0411957358
[mon] 33   [year] 3 1200085.0637275623
[mon] 34   [year] 3 1203925.3359314904
[mon] 35   [year] 3 1207777.8970064712
[mon] 36   [year] 4 1211642.7862768923
[mon] 37   [year] 4 1215520.0431929785
[mon] 38   [year] 4 1219409.707331196
[mon] 39   [year] 4 1223311.818394656
[mon] 40   [year] 4 1227226.416213519
[mon] 41   [year] 4 1231153.5407454025
[mon] 42   [year] 4 1235093.2320757878
[mon] 43   [year] 4 1239045.5304184305
[mon] 44   [year] 4 1243010.4761157695
[mon] 45   [year] 4 1246988.10963934
[mon] 46   [year] 4 1250978.471590186
[mon] 47   [year] 4 1254981.6026992747
[mon] 48   [year] 5 1258997.5438279125
[mon] 49   [year] 5 1263026.335968162
[mon] 50   [year] 5 1267068.0202432603
[mon] 51   [year] 5 1271122.6379080387
[mon] 52   [year] 5 1275190.2303493447
[mon] 53   [year] 5 1279270.8390864627
[mon] 54   [year] 5 1283364.5057715394
[mon] 55   [year] 5 1287471.2721900085
[mon] 56   [year] 5 1291591.1802610166
[mon] 57   [year] 5 1295724.272037852
[mon] 58   [year] 5 1299870.5897083732
[mon] 59   [year] 5 1304030.1755954402
[mon] 60   [year] 6 1308203.0721573455
[mon] 61   [year] 6 1312389.3219882492
[mon] 62   [year] 6 1316588.9678186118
[mon] 63   [year] 6 1320802.0525156315
[mon] 64   [year] 6 1325028.6190836816
[mon] 65   [year] 6 1329268.7106647496
[mon] 66   [year] 6 1333522.3705388769
[mon] 67   [year] 6 1337789.6421246014
[mon] 68   [year] 6 1342070.5689794002
[mon] 69   [year] 6 1346365.1948001345
[mon] 70   [year] 6 1350673.5634234948
[mon] 71   [year] 6 1354995.7188264502
[mon] 72   [year] 7 1359331.705126695
[mon] 73   [year] 7 1363681.5665831005
[mon] 74   [year] 7 1368045.3475961667
[mon] 75   [year] 7 1372423.0927084745
[mon] 76   [year] 7 1376814.8466051416
[mon] 77   [year] 7 1381220.6541142783
[mon] 78   [year] 7 1385640.560207444
[mon] 79   [year] 7 1390074.6100001081
[mon] 80   [year] 7 1394522.8487521086
[mon] 81   [year] 7 1398985.3218681153
[mon] 82   [year] 7 1403462.0748980937
[mon] 83   [year] 7 1407953.1535377677
[mon] 84   [year] 8 1412458.6036290887
[mon] 85   [year] 8 1416978.4711607017
[mon] 86   [year] 8 1421512.8022684162
[mon] 87   [year] 8 1426061.6432356753
[mon] 88   [year] 8 1430625.0404940294
[mon] 89   [year] 8 1435203.0406236104
[mon] 90   [year] 8 1439795.6903536064
[mon] 91   [year] 8 1444403.0365627378
[mon] 92   [year] 8 1449025.1262797387
[mon] 93   [year] 8 1453662.0066838341
[mon] 94   [year] 8 1458313.7251052225
[mon] 95   [year] 8 1462980.3290255591
兩法的金額差距: 213060
一次請領的方法需多活 16 個月才可賺得比較多



勞保試算網頁

勞保試算網頁:
http://www.bli.gov.tw/sub.aspx?a=V4jhspjoQxg%3d

勞保程式

# benefit.py


import math


capital = 1000000    # 100萬




rateforLong = 1.9/100#定存利率0.95




rateforshort = 0.32/100#活存利率




def getmoney(month,rate):
    return capital*(1+rate)**(month)    




years = 8 #8年領完全部年金所需時間


month=years*12 #總月數




#resultforLong = capital*(1+rateforLong)**(month)


resultforLong = getmoney(month,rateforLong)


print ("定存的result:",resultforLong)


resultforshort = getmoney(month,rateforshort)


print ("活存的result:",resultforshort)


for mon in range(1,month):
    for rate in [rateforshort]:
        print("[mon]",str(mon),"[rate]:",str(rate),"=>\t",getmoney(mon,rate))


forOneMoney = 10000
for mon in range(1,month):
    print ("[mon]"+str(mon),forOneMoney*mon)

Python:Nested function Aren't Nested Scope

def outer(x):
    def inner(i):    #assign in outer's local
        print (i)    #i is in inner local
        if i:inner(i-1):#not in my local or global
    inner(x)


>>outer(3)
trackback......
NameError




def outer(x):
    global inner
    def inner(x): #assign in enclosing module
        print (i)
        if i: inner(i-1)#found in my global scope now
    inner(x)




>>outer(3)
3 2 1 0