本文目錄一覽:
- 1、python可以做哪些有趣的事情
- 2、請教一個python代碼問題!
- 3、python 輸出數字,如何不以科學計數法輸出?
- 4、學習python,用什麼軟件?
- 5、最常用的幾個python庫
- 6、如何系統地自學 Python
python可以做哪些有趣的事情
1. Python3 實現色情圖片識別
2. Python3 圖片隱寫術
3. 200 行 Python 代碼實現 2048
4. Python實現3D建模工具
5. 使用 Python 定製詞雲
6. Python3 智能裁切圖片
7.微信變為聊天機器人
8. 使用 Python 解數學方程
9. 使用 Python 創建照片馬賽克
10. Python 基於共現提取《釜山行》人物關係
11. Python 氣象數據分析:《Python 數據分析實戰》
12. NBA常規賽結果預測:利用Python進行比賽數據分析
13. Python 的循環語句和隱含波動率的計算
14. K-近鄰算法實現手寫數字識別系統
15. 數獨遊戲的 Python 實現與破解
16. 基於 Flask 與 MySQL 實現番劇推薦系
17. Python 實現英文新聞摘要自動提取
18. Python 解決哲學家就餐問題
19. Ebay 在線拍賣數據分析
20. 神經網絡實現人臉識別任務
21. 使用 Python 解數學方程
22. Python3 實現火車票查詢工具
23. Python 實現端口掃描器
24. Python3 實現可控制肉雞的反向Shell
25. Python 實現 FTP 弱口令掃描器
26. 基於PyQt5 實現地圖中定位相片拍攝位置
27. Python實現網站模擬登陸
28.Python實現簡易局域網視頻聊天工具
29. 基於 TCP 的 python 聊天程序
30. Python3基於Scapy實現DDos
31. 高德API + Python 解決租房問題
32. 基於 Flask 與 RethinkDB 實現TODO List
請教一個python代碼問題!
假設兩個數帶進去替換x和n就好理解了,比如power(2,3)計算2的3次方
按照代碼
s=1 n0(我們假設了n為3)
然後執行while n0 里的n=n-1 n變成2
再執行s(這個是新的s)=s(這個是舊的s)*x 新s變為2(我們上面假設x為2)
然後返回s(下次使用時就變成了舊s)
接着判斷n,依舊大於0 ,執行n=n-1 n變成1 執行s=s*x 新s變為4,然後返回s
接着判斷n,依舊大於0,執行n=n-1 n變成0(意味着這次結束就將跳出循環)執行s=s*x
新s變成8
循環結束,得到結果。2的3次方是8
不知道還有什麼地方不明白
python 輸出數字,如何不以科學計數法輸出?
概述
利用numpy設置輸出選項即可
代碼解析
1、未使用numpy設置:
import time # time 時間類
print(time*time*1000) #輸出一個非常大的數字
#out:
6.30e1352
由此可以看到,默認輸出是以科學計數方式輸出
2、使用numpy設置print的輸出選項:
import numpy as np
import time
np.set_printoptions(suppress=True) #設置print選項的參數
print(time*time*1000)
#out
6301829436782946134
拓展內容
numpy
NumPy是Python語言的一個擴充程序庫。支持高階大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。NumPy的前身Numeric最早是由Jim Hugunin與其它協作者共同開發,2005年,Travis Oliphant在Numeric中結合了另一個同性質的程序庫Numarray的特色,並加入了其它擴展而開發了NumPy。NumPy為開放源代碼並且由許多協作者共同維護開發。
NumPy引用CPython(一個使用字節碼的解釋器),而在這個Python實現解釋器上所寫的數學算法代碼通常遠比編譯過的相同代碼要來得慢。為了解決這個難題,NumPy引入了多維數組以及可以直接有效率地操作多維數組的函數與運算符。因此在NumPy上只要能被表示為針對數組或矩陣運算的算法,其運行效率幾乎都可以與編譯過的等效C語言代碼一樣快。
學習python,用什麼軟件?
Python開發軟件可根據其用途不同分為兩種,一種是Python代碼編輯器,一種是Python集成開發工具,兩者的配合使用可以極大的提高Python開發人員的編程效率,以下是常用的幾款Python代碼編輯器和Python集成開發工具。
一、Python代碼編輯器
1. Sublime Text
Sublime Text是一款非常流行的代碼編輯器,支持Python代碼編輯,同時兼容所有平台,並且豐富的插件擴展了語法和編輯功能,迅捷小巧,具有良好的兼容性,很受編程人士的喜愛!
2. Vim
Vim和Vi是一種模型編輯器,它將文本查看從文本編輯中分離,VIM在原始VI之上做了諸多改進,包括可擴展模型和就地代碼構建,VIMScripts可用於各種Python開發任務!
3. Atom
Atom被稱為“21世紀可破解的文本編輯器”,可以兼容所有平台,擁有時尚的界面、文件系統瀏覽器和擴展插件市場,使用Electron構建,其運行時安裝的擴展插件可支持Python語言!
4. GNU Emacs
GNU Emacs是一款終身免費且兼容任何平台的代碼編輯器,使用強大的Lisp編程語言進行定製,並為Python開發提供各種定製腳本,是一款可擴展、可定製、自動記錄、實時顯示的編輯器,一直縈繞在UNIX周圍。
5. Visual Studio Code
Visual Studio Code是一款兼容Linux、Mac OS X和Windows 平台的全功能代碼編輯器,可擴展並且可以對幾乎所有任務進行配置,對於Python的支持可以在Visual Studio Code中安裝插件,只需快速點擊按鈕即可成功安裝,且可自動識別Python安裝和庫。
二、Python集成開發環境
1. PyCharm
PyCharm是唯一一款專門面向Python的全功能集成開發環境,同樣擁有付費版和免費開源版,PyCharm不論是在Windows、 Mac OS X系統中,還是在Linux系統中都支持快速安裝和使用。
PyCharm直接支持Python開發環境,打開一個新的文件然後就可以開始編寫代碼,也可以在PyCharm中直接運行和調試Python程序,它還支持源碼管理和項目,並且其擁有眾多便利和支持社區,能夠快速掌握學習使用!
2. Eclipse + PyDev
PyDev是Eclipse集成開發環境的一個插件,支持Python調試、代碼補全和交互式Python控制台等,在Eclipse中安裝PyDev非常便捷,只需從Eclipse中選擇“Help”點擊“Eclipse Marketplace”然後搜索PyDev,點擊安裝,必要的時候重啟Eclipse即可,對於資深Eclipse開發者來說,PyDev可以很輕鬆上手!
3. Visual Studio
Visual Studio是一款全功能集成開發平台,提供了免費版和付費版,可以支持各種平台的開發,且附帶了自己的擴展插件市場。在Visual Studio中可進行Python編程,並且支持Python智能感知、調試和其他工具,值得注意的是Visual Studio不支持Linux平台!
4. Spyder
Spyder是一款為了數據科學工作流做了優化的開源Python集成開發環境,它是附在Anaconda軟件包管理器發行版中的,Spyder擁有大部分集成開發環境該具備的功能,如強大語法高亮功能的代碼編輯器、Python代碼補全以及集成文件瀏覽器,其還具有其他Python編輯環境中所不具備的變量瀏覽器功能,十分適合使用Python的數據科學家們。
5. Thonny
Thonny是針對新手的一款集成開發環境,適用於全部主流平台,默認情況下,Thonny會和自帶捆綁的Python版本一起安裝,十分方便新手使用!
最常用的幾個python庫
Python常用庫大全,看看有沒有你需要的。
環境管理
管理 Python 版本和環境的工具
p – 非常簡單的交互式 python 版本管理工具。
pyenv – 簡單的 Python 版本管理工具。
Vex – 可以在虛擬環境中執行命令。
virtualenv – 創建獨立 Python 環境的工具。
virtualenvwrapper- virtualenv 的一組擴展。
包管理
管理包和依賴的工具。
pip – Python 包和依賴關係管理工具。
pip-tools – 保證 Python 包依賴關係更新的一組工具。
conda – 跨平台,Python 二進制包管理工具。
Curdling – 管理 Python 包的命令行工具。
wheel – Python 分發的新標準,意在取代 eggs。
包倉庫
本地 PyPI 倉庫服務和代理。
warehouse – 下一代 PyPI。
Warehousebandersnatch – PyPA 提供的 PyPI 鏡像工具。
devpi – PyPI 服務和打包/測試/分發工具。
localshop – 本地 PyPI 服務(自定義包並且自動對 PyPI 鏡像)。
分發
打包為可執行文件以便分發。
PyInstaller – 將 Python 程序轉換成獨立的執行文件(跨平台)。
dh-virtualenv – 構建並將 virtualenv 虛擬環境作為一個 Debian 包來發布。
Nuitka – 將腳本、模塊、包編譯成可執行文件或擴展模塊。
py2app – 將 Python 腳本變為獨立軟件包(Mac OS X)。
py2exe – 將 Python 腳本變為獨立軟件包(Windows)。
pynsist – 一個用來創建 Windows 安裝程序的工具,可以在安裝程序中打包 Python本身。
構建工具
將源碼編譯成軟件。
buildout – 一個構建系統,從多個組件來創建,組裝和部署應用。
BitBake – 針對嵌入式 Linux 的類似 make 的構建工具。
fabricate – 對任何語言自動找到依賴關係的構建工具。
PlatformIO – 多平台命令行構建工具。
PyBuilder – 純 Python 實現的持續化構建工具。
SCons – 軟件構建工具。
交互式解析器
交互式 Python 解析器。
IPython – 功能豐富的工具,非常有效的使用交互式 Python。
bpython- 界面豐富的 Python 解析器。
ptpython – 高級交互式Python解析器, 構建於python-prompt-toolkit 之上。
文件
文件管理和 MIME(多用途的網際郵件擴充協議)類型檢測。
imghdr – (Python 標準庫)檢測圖片類型。
mimetypes – (Python 標準庫)將文件名映射為 MIME 類型。
path.py – 對 os.path 進行封裝的模塊。
pathlib – (Python3.4+ 標準庫)跨平台的、面向對象的路徑操作庫。
python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 接口。
Unipath- 用面向對象的方式操作文件和目錄
watchdog – 管理文件系統事件的 API 和 shell 工具
日期和時間
操作日期和時間的類庫。
arrow- 更好的 Python 日期時間操作類庫。
Chronyk – Python 3 的類庫,用於解析手寫格式的時間和日期。
dateutil – Python datetime 模塊的擴展。
delorean- 解決 Python 中有關日期處理的棘手問題的庫。
moment – 一個用來處理時間和日期的Python庫。靈感來自於Moment.js。
PyTime – 一個簡單易用的Python模塊,用於通過字符串來操作日期/時間。
pytz – 現代以及歷史版本的世界時區定義。將時區數據庫引入Python。
when.py – 提供用戶友好的函數來幫助用戶進行常用的日期和時間操作。
文本處理
用於解析和操作文本的庫。
通用
chardet – 字符編碼檢測器,兼容 Python2 和 Python3。
difflib – (Python 標準庫)幫助我們進行差異化比較。
ftfy – 讓Unicode文本更完整更連貫。
fuzzywuzzy – 模糊字符串匹配。
Levenshtein – 快速計算編輯距離以及字符串的相似度。
pangu.py – 在中日韓語字符和數字字母之間添加空格。
pyfiglet -figlet 的 Python實現。
shortuuid – 一個生成器庫,用以生成簡潔的,明白的,URL 安全的 UUID。
unidecode – Unicode 文本的 ASCII 轉換形式 。
uniout – 打印可讀的字符,而不是轉義的字符串。
xpinyin – 一個用於把漢字轉換為拼音的庫。
如何系統地自學 Python
是否非常想學好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學習成本太高,心裡默默敲着退堂鼓?
幸運的是,Python 是一門初學者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。
Python 的設計哲學之一就是簡單易學,體現在兩個方面:
語法簡潔明了:相對 Ruby 和 Perl,它的語法特性不多不少,大多數都很簡單直接,不玩兒玄學。
切入點很多:Python 可以讓你可以做很多事情,科學計算和數據分析、爬蟲、Web 網站、遊戲、命令行實用工具等等等等,總有一個是你感興趣並且願意投入時間的。
廢話不多說,學會一門語言的捷徑只有一個: Getting Started
¶ 起步階段
任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。
°1 硬知識
“硬
知識”指的是編程語言的語法、算法和數據結構、編程範式等,例如:變量和類型、循環語句、分支、函數、類。這部分知識也是具有普適性的,看上去是掌握了一
種語法,實際是建立了一種思維。例如:讓一個 Java 程序員去學習 Python,他可以很快的將 Java 中的學到的面向對象的知識 map 到
Python 中來,因此能夠快速掌握 Python 中面向對象的特性。
如果你是剛開始學習編程的新手,一本可靠的語法書是非常重要的。它看上去可能非常枯燥乏味,但對於建立穩固的編程思維是必不可少。
下面列出了一些適合初學者入門的教學材料:
❖「笨方法學 Python」:
這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,非常適合快速起步。
❖「廖雪峰的 Python 2.7 教程」:Home – 廖雪峰的官方網站
Python 中文教程的翹楚,專為剛剛步入程序世界的小白打造。
❖「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!
這本指南着重於 Python 的最佳實踐,不管你是 Python 專家還是新手,都能獲得極大的幫助。
❖「Python 官方文檔」:Our Documentation
實踐中大部分問題,都可以在官方文檔中找到答案。
❖ 輔助工具:Python Tutor
一個 Python 對象可視化的項目,用圖形輔助你理解 Python 中的各種概念。
Python 的哲學:
用一種方法,最好是只有一種方法來做一件事。
學習也是一樣,雖然推薦了多種學習資料,但實際學習的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能需要閱讀講解數據結構和算法的書,這些知識對於理解和使用 Python 中的對象模型有着很大的幫助。
°2 軟知識
“軟知識”則是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即使完全不了解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得“傻”了些。
對
這些知識的學習,取決於你嘗試解決的問題的領域和深度。對初學者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一會兒看 2.7
一會兒又轉到 3.0,或者徜徉在類庫的大海中無法自拔,Scrapy,Numpy,Django
什麼都要試試,或者參與編輯器聖戰、大括號縮進探究、操作系統辯論賽等無意義活動,或者整天跪舔語法糖,老想着怎麼一行代碼把所有的事情做完,或者去構想
聖潔的性能安全通用性健壯性全部滿分的解決方案。
很多“大牛”都會告誡初學者,用這個用那個,少走彎路,這樣反而把初學者推向了真正的彎路。
還不如告訴初學者,學習本來就是個需要你去走彎路出 Bug,只能腳踏實地,沒有奇蹟只有狗屎的過程。
選擇一個方向先走下去,哪怕臟丑差,走不動了再看看有沒有更好的解決途徑。
自己走了彎路,你才知道這麼做的好處,才能理解為什麼人們可以手寫狀態機去匹配卻偏要發明正則表達式,為什麼面向過程可以解決卻偏要面向對象,為什麼我可以操縱每一根指針卻偏要自動管理內存,為什麼我可以嵌套回調卻偏要用 Promise…
更重要的時,你會明白,高層次的解決方法都是對低層次的封裝,並不是任何情況下都是最有效最合適的。
技術湧進就像波浪一樣,那些陳舊的封存已久的技術,消退了遲早還會涌回的。就像現在移動端應用、手游和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史么?
因此,不要擔心自己走錯路誤了終身,堅持並保持進步才是正道。
起步階段的核心任務是掌握硬知識,軟知識做適當了解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。
¶ 發展階段
完成了基礎知識的學習,必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓 Python 發揮出它的價值,當然不能停留在語法層面。
發展階段的核心任務,就是“跳出 Python,擁抱世界”。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web 網站、遊戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿
爬蟲舉例,如果你對計算機網絡,HTTP協議,HTML,文本編碼,JSON一無所知,你能做好這部分的工作么?而你在起步階段的基礎知識也同樣重要,如
果你連循環遞歸怎麼寫都還要查文檔,連 BFS 都不知道怎麼實現,這就像工匠做石凳每次起錘都要思考鎚子怎麼使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
°1 類庫方面
「Awesome Python 項目」:vinta/awesome-python · GitHub
這裡列出了你在嘗試解決各種實際問題時,Python 社區已有的工具型類庫,如下圖所示:
你可以按照實際需求,尋找你需要的類庫。
至於相關類庫如何使用,必須掌握的技能便是閱讀文檔。由於開源社區大多數文檔都是英文寫成的,所以,英語不好的同學,需要惡補下。
°2 書籍方面:
這裡我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧編程」:集體智慧編程 (豆瓣)
❖「數學之美」:數學之美 (豆瓣)
❖「統計學習方法」:統計學習方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「數據科學實戰」:數據科學實戰 (豆瓣)
❖「數據檢索導論」:信息檢索導論 (豆瓣)
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 (豆瓣)
Web 網站:
❖「HTML CSS 設計與構建網站」:HTML CSS設計與構建網站 (豆瓣)
…
列到這裡已經不需要繼續了。
聰明的你一定會發現上面的大部分書籍,並不是講 Python 的書,而更多的是專業知識。
事實上,這裡所謂“跳出 Python,擁抱世界”,其實是發現 Python 和專業知識相結合,能夠解決很多實際問題。這個階段能走到什麼程度,更多的取決於自己的專業知識。
¶ 深入階段
這個階段的你,對 Python 幾乎了如指掌,那麼你一定知道 Python 是用 C 語言實現的。
可是 Python 對象的“動態特徵”是怎麼用相對底層,連自動內存管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。
這裡推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對 C 語言內存模型和指針有着很好的理解。
另
外,Python 本身是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、 Haskell 等的函數式、Java
基於類的面向對象而言,它都不夠純粹。換而言之,編程語言的“道學”,在 Python
中只能有限的體悟。學習某種編程範式時,從那些面向這種範式更加純粹的語言出發,才能有更深刻的理解,也能了解到 Python 語言的根源。
這裡推薦一門公開課
「編程範式」:斯坦福大學公開課:編程範式
講師高屋建瓴,從各種編程範式的代表語言出發,給出了每種編程範式最核心的思想。
值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的范型和內存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
¶ 最後的話
每個人學編程的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人。雖然聽上去有點雞湯,但是這是事實。
希望想學 Python 想學編程的同學,不要猶豫了,看完這篇文章,Just getting started~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303411.html