『壹』 python 解決你的實際問題可以在哪些地方找資料
Python 標准庫:
應該瀏覽一下這份文檔,它為標准庫中的類型、函數和模塊提供了完整(盡管很簡略)的參考資料。標準的 Python 發布版包括了 大量 的附加模塊。其中有針對讀取 Unix 郵箱、接收 HTTP 文檔、生成隨機數、解析命令行選項、寫 CGI 程序、壓縮數據以及很多其它任務的模塊。略讀一下庫參考會給你很多解決問題的思路。
安裝 Python 模塊 展示了如何安裝其他 Python 用戶編寫的附加模塊。
Python 語言參考: 詳細說明了 Python 語法和語義。
它讀起來很累,不過對於語言本身,有份完整的手冊很有用。
其它 Python 資源:
http://www.python.org: Python 官方網站。它包含代碼、文檔和 Web 上與 Python 有關的頁面鏈接該網站鏡像於全世界的幾處其它問題,類似歐洲、日本和澳大利亞。
鏡像可能會比主站快,這取決於你的地理位置。
http://docs.python.org: 快速訪問 Python 的文檔。
http://pypi.python.org: Python 包索引,以前昵稱為乳酪店,索引了可供下載的,用戶創建的 Python 模塊。如果你發布了代碼,可以注冊到這里,這樣別人可以找到它。
http://code.activestate.com/recipes/langs/python/: Python 食譜是大量的示例代碼、大型的集合,和有用的腳本。
值得關注的是這次資源已經結集成書,名為《Python 食譜》(O』Reilly & Associates, ISBN 0-596-00797-3。)
http://scipy.org: The Scientific Python 項目包括數組快速計算和處理模塊,和大量線性代數、傅里葉變換、非線性solvers、隨機數分布,統計分析以及類似的包。
與 Python 有關的問題,以及問題報告,可以發到新聞組 comp.lang.python ,或者發送到郵件組 [email protected] 。新聞組和郵件組是開放的,所以發送的消息可以自動的跟到另一個之後。每天有超過 120 個投遞(高峰時有數百),提問(以及回答)問題,為新功能提建議,發布新模塊。在發信之前,請查閱 常見問題 (亦稱 FAQ),或者在 Python 源碼發布包的 Misc/ 目錄中查閱。郵件組也可以在 http://mail.python.org/pipermail/ 訪問。FAQ回答了很多被反復提到的問題,很可能已經解答了你的問題。
Next Previous
『貳』 Python在構建可執行的麻煩問題,怎麼解決
python的整個系統,我其實有非常多的不滿。但是用任何一門語言都是取捨問題,如果有一門語言,庫夠多,已讀,易用,性能高,我毫不猶豫立刻轉過去。python的強處在於龐大的庫,還有非常好的易讀和易用性。但是相比來說,性能一直是個問題。python的實現性能大約和C相差五倍上下。如果是大規模計算問題,大約能差10倍以上。當然,我們可以寫C擴展,但是這就不是使用python了。我們也可以說,很多時候我們不需要這么快的速度。這是個事實,但是不改變python性能差的事實。 python不但性能差,還有GIL這個玩意。以至於我現在對高並發計算都採取多進程的模式。多進程模式的通訊效率肯定比多線程低,而且麻煩。
另外,python在底層設計上,也表現出很強的實用主義傾向。這是比較外交術語的詞彙,更加直白的說法應當是,混亂,不知所謂。在閉包設計上採用free variable設計,而不是lisp中的environs設計。區別?你試試看在外層閉包中from lib import *。由於引入不定個數名稱,free variable無法處理。類似的問題還有LEGB規則,新手往往要花很長時間研究這個例子究竟是怎麼錯的: a = 1 def f(): print a a = 2 我勒個去,這種反直觀反人類的事情都有,還敢說自己易讀。
還有坑爹的元編程,這東西根本是坑爹中的坑爹貨。如果你用過多重繼承,大概就知道python的整個OO系統看起來根本是大型的模擬,到處都是亂糟糟的。C++怎麼解決多重繼承的?你最好別用(真心說,這可比python更加坑爹)。java怎麼解決多重繼承的,只能繼承Interface。其實這是變相的變成了Interface-Implement模式。python怎麼解決的?MRO!為什麽一個類加個__metaclass__就會改變性質啊,為什麽一個類去生成另一個類的寫法是——我基本不記得了,反正web.py裡面有用到,需要的話去炒栗子吧。為什麽方法要隱藏居然要改名字加__啊。你到底是在做OO還是在看起來像OO的東西上狂打補丁啊魂淡。
lambda表達式弱智。我和人討論過,lambda是否是圖靈完備的。結論還是完備的,不過需要藉助Y combinator。何必呢?由於強調lambda的快速特性,因此將lambda強制在一行以內(沒有結束標記),導致python其實是沒有匿名函數的。一個callback數組寫的難過死。
語法糖太多了點,當然,這是純粹的個人感覺。語法糖是把雙刃劍,用的好,可以簡化編寫和閱讀,但是太多,往往容易引入語法混亂和額外的約束。
另外,語言的自構建特性混亂。雖說不是每門語言都強調自構建特性,但是通常而言,都是使用C實現一個內核,由內核實現一些基礎操作。再由基礎操作實現更復雜的操作。每層的邊界都是比較清晰的。誰來告訴我,python中有多少庫在移植時是由純python實現的?庫的相互依賴層級是?
python的沙盒化也是個問題,如果沙盒做的夠好,我完全可以把python作為一個客戶級別的平台。用C寫一個很簡單的類似瀏覽器的東西,下載一個URL的python包回去運行(或者僅僅檢查更新)。從而保證本地效果/跨平台/安全性。現在?一個都保證不了。我連把一個python包轉移到另一台同構設備上都很麻煩(如果兩者不是嚴格匹配,例如系統差異,系統版本差異)無論是web開發還是移動終端開發都必須走傳統模式。
Time/System Time 時間/系統時間
『叄』 用python來解決列表問題
雖然實現的方式不優雅,但確實能夠解決你的問題,代碼如下:
def plastic(l):
l_sort = sorted(l)
result = list(range(len(l)))
for n,i in enumerate(l_sort,1):
result[l.index(i)] = n
return result
S=[[5,4,3,2,0],[6,5,4,0,1],[0,6,5,1,2],[1,7,6,0,3]]
S=list(map(plastic,S))
print(S)
輸出:
[[5, 4, 3, 2, 1], [5, 4, 3, 1, 2], [1, 5, 4, 2, 3], [2, 5, 4, 1, 3]]
『肆』 python請用遞歸演算法編程解決漢諾塔問題 在線等
這是Python3系統自帶的一個例子,估計就是這個意思,本來他是6個盤子,按照你要求改成4個了。遞歸演算法沒問題,描述也非常詳細 ;)
#!/usr/bin/envpython3
fromturtleimport*
classDisc(Turtle):
def__init__(self,n):
Turtle.__init__(self,shape="square",visible=False)
self.pu()
self.shapesize(1.5,n*1.5,2)#square-->rectangle
self.fillcolor(n/6.,0,1-n/6.)
self.st()
classTower(list):
"Hanoitower,asubclassofbuilt-intypelist"
def__init__(self,x):
"createanemptytower.xisx-positionofpeg"
self.x=x
defpush(self,d):
d.setx(self.x)
d.sety(-150+34*len(self))
self.append(d)
defpop(self):
d=list.pop(self)
d.sety(150)
returnd
defhanoi(n,from_,with_,to_):
ifn>0:
hanoi(n-1,from_,to_,with_)
to_.push(from_.pop())
hanoi(n-1,with_,from_,to_)
defplay():
onkey(None,"space")
clear()
try:
hanoi(6,t1,t2,t3)
write("pressSTOPbuttontoexit",
align="center",font=("Courier",16,"bold"))
exceptTerminator:
pass#turtledemouserpressedSTOP
defmain():
globalt1,t2,t3
ht();penup();goto(0,-225)#writerturtle
t1=Tower(-250)
t2=Tower(0)
t3=Tower(250)
#maketowerof6discs
foriinrange(4,0,-1):
t1.push(Disc(i))
#preparespartanicuserinterface;-)
write("pressspacebartostartgame",
align="center",font=("Courier",16,"bold"))
onkey(play,"space")
listen()
return"EVENTLOOP"
if__name__=="__main__":
msg=main()
print(msg)
mainloop()
『伍』 關於python教程中處理異常的問題
EOF為"文件結束符",在linux終端中按Ctrl-D就是向終端輸入EOF,在windows的cmd中Ctrl-Z是EOF.
而且在輸入後需要按回車鍵.'\n'代表linux的換行符,就是另起一行的符號,直接輸入'\n'只是代表你輸入了'\'字元和'n'字元,是兩個字元.
『陸』 python程序算一元二次方程的實驗報告
https://github.com/hitwhphk/mathTool
我上數值分析時,做的一個GUI程序,解一元二次方程,多元一次方程組。具體的看源碼吧
『柒』 python多線程的問題如何處理
在python里線程出問題,可能會導致主進程崩潰。 雖然python里的線程是操作系統的真實線程。
那麼怎麼解決呢?通過我們用進程方式。子進程崩潰後,會完全的釋放所有的內存和錯誤狀態。所以進程更安全。 另外通過進程,python可以很好的繞過GIL,這個全局鎖問題。
但是進程也是有局限的。不要建立超過CPU總核數的進程,否則效率也不高。
簡單的總結一下。
當我們想實現多任務處理時,首先要想到使用multiprocessing, 但是如果覺著進程太笨重,那麼就要考慮使用線程。 如果多任務處理中需要處理的太多了,可以考慮多進程,每個進程再採用多線程。如果還處理不要,就要使用輪詢模式,比如使用poll event, twisted等方式。如果是GUI方式,則要通過事件機制,或者是消息機制處理,GUI使用單線程。
所以在python里線程不要盲目用, 也不要濫用。 但是線程不安全是事實。如果僅僅是做幾個後台任務,則可以考慮使用守護線程做。如果需要做一些危險操作,可能會崩潰的,就用子進程去做。 如果需要高度穩定性,同時並發數又不高的服務。則強烈建議用多進程的multiprocessing模塊實現。
在linux或者是unix里,進程的使用代價沒有windows高。還是可以接受的。
『捌』 python3.9運行程序出現這種問題怎麼解決
目錄路徑的問題,通常最好的是調用os.path.join(path1,path2,path3)函數來進行處理拼接,這樣會避免,因為linux和windows路徑的斜杠不同,或因轉義符引起的路徑問題。
『玖』 python請用異常處理改造作業1空氣質量提醒問題,使其能夠接收並處理用戶的任何輸入。
#Python3.6
x=int(input("請輸入PM2.5數值:"))
ifx<35:
print("空氣質量優,建議戶外運動。")
elifx<75:
print("空氣質量良好,建議適度戶外運動。")
else:
print("空氣污染,請小心!")
whileTrue:
x=input("請輸入PM2.5數值:")
try:
x=int(x)
break
exceptValueError:
print("輸入PM2.5的值錯誤,請重新輸入:")
ifx<35:
print("空氣質量優,建議戶外運動。")
elifx<75:
print("空氣質量良好,建議適度戶外運動。")
else:
print("空氣污染,請小心!")