操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    考書籍《Python極客項目編程》

    運行環境

    操作系統Win11。

    Python 3.10.5。

    電腦連接互聯網。

    安裝相關包

    在命令行窗口使用pip命令(我的電腦上,“pip.exe”文件所在目錄是“D:\Programs\Python\Python310\Scripts”)安裝numpy、matplotlib、scipy等相關包,命令如下:

    pip install numpy

    pip install matplotlib

    pip install scipy

    并根據提示使用如下命令升級:

    D:\Programs\Python\Python310\python.exe -m pip install --upgrade pip


    安裝包相關信息的查看(以numpy為例)

    啟動python,進入python提示符,依次鍵入import numpy、print(numpy)、dir(numpy);或者help()、numpy,顯示該模塊的相關信息。(help(numpy)也可以)。



    源代碼

    源代碼網址: https://github.com/electronut/pp/blob/master/boids/boids.py

    源代碼如下:

    """

    boids.py

    Implementation of Craig Reynold's BOIDs

    Author: Mahesh Venkitachalam

    """


    import sys, argparse

    import math

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    from scipy.spatial.distance import squareform, pdist, cdist

    from numpy.linalg import norm


    width, height = 640, 480


    class Boids:

    """Class that represents Boids simulation"""

    def __init__(self, N):

    """ initialize the Boid simulation"""

    # init position & velocities

    self.pos = [width/2.0, height/2.0] + 10*np.random.rand(2*N).reshape(N, 2)

    # normalized random velocities

    angles = 2*math.pi*np.random.rand(N)

    self.vel = np.array(list(zip(np.sin(angles), np.cos(angles))))

    self.N = N

    # min dist of approach

    self.minDist = 25.0

    # max magnitude of velocities calculated by "rules"

    self.maxRuleVel = 0.03

    # max maginitude of final velocity

    self.maxVel = 2.0


    def tick(self, frameNum, pts, beak):

    """Update the simulation by one time step."""

    # get pairwise distances

    self.distMatrix = squareform(pdist(self.pos))

    # apply rules:

    self.vel += self.applyRules()

    self.limit(self.vel, self.maxVel)

    self.pos += self.vel

    self.applyBC()

    # update data

    pts.set_data(self.pos.reshape(2*self.N)[::2],

    self.pos.reshape(2*self.N)[1::2])

    vec = self.pos + 10*self.vel/self.maxVel

    beak.set_data(vec.reshape(2*self.N)[::2],

    vec.reshape(2*self.N)[1::2])


    def limitVec(self, vec, maxVal):

    """limit magnitide of 2D vector"""

    mag = norm(vec)

    if mag > maxVal:

    vec[0], vec[1] = vec[0]*maxVal/mag, vec[1]*maxVal/mag


    def limit(self, X, maxVal):

    """limit magnitide of 2D vectors in array X to maxValue"""

    for vec in X:

    self.limitVec(vec, maxVal)


    def applyBC(self):

    """apply boundary conditions"""

    deltaR = 2.0

    for coord in self.pos:

    if coord[0] > width + deltaR:

    coord[0] = - deltaR

    if coord[0] < - deltaR:

    coord[0] = width + deltaR

    if coord[1] > height + deltaR:

    coord[1] = - deltaR

    if coord[1] < - deltaR:

    coord[1] = height + deltaR


    def applyRules(self):

    # apply rule #1 - Separation

    D = self.distMatrix < 25.0

    vel = self.pos*D.sum(axis=1).reshape(self.N, 1) - D.dot(self.pos)

    self.limit(vel, self.maxRuleVel)


    # different distance threshold

    D = self.distMatrix < 50.0


    # apply rule #2 - Alignment

    vel2 = D.dot(self.vel)

    self.limit(vel2, self.maxRuleVel)

    vel += vel2;


    # apply rule #1 - Cohesion

    vel3 = D.dot(self.pos) - self.pos

    self.limit(vel3, self.maxRuleVel)

    vel += vel3


    return vel


    def buttonPress(self, event):

    """event handler for matplotlib button presses"""

    # left click - add a boid

    if event.button is 1:

    self.pos = np.concatenate((self.pos,

    np.array([[event.xdata, event.ydata]])),

    axis=0)

    # random velocity

    angles = 2*math.pi*np.random.rand(1)

    v = np.array(list(zip(np.sin(angles), np.cos(angles))))

    self.vel = np.concatenate((self.vel, v), axis=0)

    self.N += 1

    # right click - scatter

    elif event.button is 3:

    # add scattering velocity

    self.vel += 0.1*(self.pos - np.array([[event.xdata, event.ydata]]))


    def tick(frameNum, pts, beak, boids):

    #print frameNum

    """update function for animation"""

    boids.tick(frameNum, pts, beak)

    return pts, beak


    # main() function

    def main():

    # use sys.argv if needed

    print('starting boids...')


    parser = argparse.ArgumentParser(description="Implementing Craig Reynold's Boids...")

    # add arguments

    parser.add_argument('--num-boids', dest='N', required=False)

    args = parser.parse_args()


    # number of boids

    N = 100

    if args.N:

    N = int(args.N)


    # create boids

    boids = Boids(N)


    # setup plot

    fig = plt.figure()

    ax = plt.axes(xlim=(0, width), ylim=(0, height))


    pts, = ax.plot([], [], markersize=10,

    c='k', marker='o', ls='None')

    beak, = ax.plot([], [], markersize=4,

    c='r', marker='o', ls='None')

    anim = animation.FuncAnimation(fig, tick, fargs=(pts, beak, boids),

    interval=50)


    # add a "button press" event handler

    cid = fig.canvas.mpl_connect('button_press_event', boids.buttonPress)


    plt.show()


    # call main

    if __name__ == '__main__':

    main()


    運行結果

    將上述代碼保存為文件“d:\temp\boids.py”。

    在命令行窗口執行命令 “python d:\temp\boids.py”,運行結果如下:

    要熟練使用 python 解決各種問題,開發工具必不可少,其中就包括 IDE 或者代碼編輯器,或者集成的開發編輯器(IDE),一個好的開發工具可以讓你事半功倍,接下來主要介紹 python 的一些常用的開發工具。

    1 IDLE:Python 自帶的 IDE 工具



    IDLE(Integrated Development and Learning Environment),集成開發和學習環境,是 Python 的集成開發環境,純 Python 下使用 Tkinter 編寫的 IDE。

    • 支持平臺:Windows, macOS, Linux
    • 適合人群:初學者
    • 支持語言:Python


    IDLE 提供了一些針對初學者非常友好的功能,例如:

    • 語法高亮
    • 多窗口文本編輯器
    • 程序動畫或步進(指一次執行一行代碼)
    • 段落縮進
    • TABLE 鍵控制
    • 斷點可用于簡化調試
    • 調用堆棧清晰可見

    2 IPython:交互式計算系統



    IPython 主要包含三個組件:增加的交互式 “Python shell”,解耦的雙過程通信模型,交互式并行計算的架構。可以實現并行化計算,同時支持變量自動補全。使用In [x]Out [x]表示輸入輸出

    IPython 提供以下交互性功能:

    • 代碼著色
    • 變量自動補全,自動縮進
    • 支持 bash shell 命令
    • 強大的交互式 shell
    • Jupyter 內核
    • 交互式的數據可視化工具
    • 靈活、可嵌入的解釋器
    • 易于使用,高性能的并行計算工具
    • 使用%run命令運行腳本
    • 使用%timeit命令快速測量時間
    • 使用%pdb命令快速 debug

    IPython 支持 Python2.7 版本或者 3.3 以上的版本,通過以下命令安裝 IPython: 

    pip install ipython

    復制代碼

    3 PyCharm:JetBrains 打造的 Python IDE



    PyCharm 是一個跨平臺的全功能 Python 開發工具,是由 JetBrains 打造的一款 Python IDE (Integrated Development Environment,集成開發環境)。它有兩個版本,一個是免費的社區版本,另一個是面向企業開發者的更先進的專業版本。

    Pycharm 是程序員常使用的開發工具,簡單、易用,并且能夠設置不同的主題模式。它還能與 IPython notebook 進行集成,并支持 Anaconda 及其他的科學計算包,比如 matplotlib 和 NumPy。同時它支持很多的第三方 web 開發框架,比如 Django、 Pyramid、web2py、google app engine 和 Flask

    PyCharm 具有一些可以幫助開發者提高效率的工具,比如智能代碼補全、調試、語法高亮、項目管理與導航、代碼跳轉、智能提示、圖形化的調試器和運行器、自動完成、單元測試、版本控制、遵循 PEP8 規范的代碼質量檢查、智能重構??????等



    • 支持平臺:Windows、Mac 或 Linux 版本
    • 下載:PyCharm: the Python IDE for Professional Developers by JetBrains
    • PyCharm社區版本下載

    主要功能包括:

    • 代碼分析與輔助功能,擁有補全代碼、高亮語法和錯誤提示,支持代碼折疊和分割窗口;
    • 項目和代碼導航:專門的項目視圖,文件結構視圖和和文件、類、方法和用例的快速跳轉;
    • 重構:包括重新命名,提取方法/超類,導入域/變量/常量、pull,push 等;
    • 支持 Web 框架: Django、Pyramid、web2py、google app engine 和 Flask;
    • 集成 Python 調試器;
    • 集成單元測試,按行覆蓋代碼;
    • Google App Engine 下的 Python 開發;
    • 集成版本控制系統:為 Mercurial,Git, Subversion, Perforce 和 CVS 提供統一的用戶界面,擁有修改以及合并功能;
    • PyCharm 配備了 1000 多個插件,程序員也可以編寫自己的插件來擴展其功能

    4 Spyder:開源的 python 集成開發環境



    Spyder Python 是一個開源的 python 集成開發環境,非常適合用來進行科學計算方面的 python 開發,是用 python 開發的輕量級軟件,遵循 MIT 協議,可免費使用。

    • 支持平臺:Windows, macOS, Linux
    • 適合人群:數據科學開發者
    • 下載:???????Home — Spyder IDE

    Spyder 有一個 Editor(編輯器)用于編寫代碼,Console(控制臺)可以評估代碼并且在任何時候都可以看到運行結果,Variable Explorer(變量管理器)可以查看代碼中定義的變量。



    Spyder python 的基本功能包括:

    • 多語言編輯器:具有函數/類瀏覽器的多語言編輯器,代碼分析功能(目前支持 pyflakes 和 pylint),代碼完成,水平和垂直分割以及 goto 定義;
    • 交互式控制臺:Python 或 IPython 控制臺具有工作空間和調試支持,還帶有 Matplotlib 數字集成;
    • 文件查看:顯示在編輯器或控制臺中進行的任何類或函數調用的文檔;
    • variable explorer(變量探索器): 瀏覽在執行文件期間創建的變量
    • 文件查找:支持正則表達式;
    • 文件管理;
    • 可以作為 PyQT 的擴展庫,可以嵌入到 PyQT 的應用中。

    5 Jupyter:開源 IDE,IPython 的衍生品



    Jupyter 是一款開源 IDE,IPython 的衍生品,它的名字來自 Julia、python、R 三種語言的組合,主要是用來做數據科學。

    Jupyter 家族有 Jupyter Notebook、Jupyter Lab、Jupyter Hub 三大產品,前兩者都是基于 Web 的交互式計算環境,Hub 是服務器端的應用。

    • 支持瀏覽器:Chrome, Firefox, Safari 等
    • 適合人群:所有人
    • 下載:Project Jupyter | Home



    Jupyter Notebook 的本質是一個 Web 應用程序,便于創建和共享程序文檔,支持實時代碼,數學方程,可視化和 markdown。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等。

    Windows 打開 Jupyter Notebook 的方法:

    Win + R打開運行窗口,輸入 Jupyter Notebook,回車,就會默認在本地 8888 端口啟動一個 web 服務,并自動打開瀏覽器,打開http://localhost:8888/tree頁面,在這個頁面可以看到當前目錄下的所有文件夾以及ipynb文件。




    6 Anaconda:python 數據科學平臺(包管理)



    Anaconda 是一款 python 數據科學平臺,安裝它后就默認安裝了 python、IPython、集成開發環境 Spyder 和眾多的包和模塊。Anaconda 包含了 conda、Python 在內的超過 180 個科學包及其依賴項,比如:numpy、pandas、TensorFlow、scipy 等。



    • 下載:Anaconda | Anaconda Distribution
    • github 上 anaconda 開發平臺:Anaconda-Platform · GitHub



    7 PTVS:github 上的開源項目



    PTVS (Python Tools for Visual Studio)在 IronPython Tools for Visual Studio 的代碼基礎上進行了增強并添加了對 Cython、集群的支持,以及諸如 Numpy 和 Scipy 這樣的新模塊。

    PTVS 的主要特性包括:CPython、IronPython、Jython 和 PyPy;高級編輯功能如 IntelliSense;多重構;內置 REPL(read-eval-print loop)窗口;調試和分析功能等。

    • 類型:代碼編輯器 &輕量級 IDE
    • 支持平臺:Windows, macOS, Linux
    • 適合人群:初、中階開發人群
    • 支持語言:Python、Java 等絕大部分語言
    • 下載:Download Visual Studio Code - Mac, Linux, Windows
    • https://microsoft.github.io/PTVS/

    Visual Studio Code(簡稱 VS Code)是微軟開發的免費代碼編輯器,內置對 JavaScript, TypeScript 和 Node.js 的支持,還可以通過豐富的拓展支持 C++, C#, Java, Python, PHP, Go 等語言的開發。通過安裝 Python 插件,VS Code 可以變身為一款輕量級的 Python IDE,具有豐富的功能,包括代碼高亮、自動補全、debug、調試、單元測試、notebook 集成、網站開發等。



    8 Eclipse + Pydev:跨平臺的自由集成開發環境



    Eclipse 是非常流行的 IDE,Eclipse with Pydev 允許開發者創建有用和交互式的 Web 應用。Pydev 是一個運行在 eclipse 上的開源插件,PyDev 是 Eclipse 開發 Python 的 IDE,支持 Python,Jython 和 IronPython 的開發。

    • 支持平臺:Windows, macOS, Linux
    • 適合人群:中、高階開發人群
    • 支持語言:Python
    • 下載:Download,PyDev

    PyDev 具有許多功能,包括:

    • Django 集成
    • 自動代碼補全
    • 多語言支持
    • 集成的 Python 調試
    • 代碼分析
    • 代碼模板
    • 智能縮進
    • 括號匹配
    • 錯誤標記
    • 源代碼控制集成
    • 代碼折疊
    • UML 編輯和查看
    • 單元測試整合
    • 支持 Python 2.x 和 3.x 語法



    9 Eric:集成項目管理功能的 Python 集成開發環境



    Eric 是一個開源 python 代碼編輯器和集成開發環境,遵循 GPL 協議,免費使用。它是純 python 編寫的,基于 Qt GUI 并集成了強大的 Scintilla 編輯器功能。它提供了一個可靠的插件管理系統,可以通過插件來擴展功能。

    Eric 提供了所有的基礎功能,比如調用提示、代碼折疊、代碼高亮、類瀏覽器、代碼覆蓋及分析等等。但是 Eric 的關鍵功能讓它有了與其他商業 python IDE 競爭的能力:

    • 集成的任務管理
    • 單元測試支持 – 已集成
    • 重構
    • 正則表達式和 Qt 對話框核心插件
    • 可選擇的從編輯器中啟動第三方應用程序
    • 應用程序圖
    • 項目管理
    • 交互式的 Python shell
    • 多語言用戶界面,包括英語,德語,俄語,法語,捷克語,西班牙語,意大利語,土耳其語和中文
    • 以插件的方式集成版本控制工具 Subversion, Mercurial 和 Git




    10 Sublime Text:跨平臺的、輕量級的代碼編輯器



    Sublime- Text 是一個用 C++ 和 Python 開發的跨平臺 IDE。除了 Python 之外,它還提供對其他語言的支持。Sublime 有自己的包管理器,開發者可以用來安裝組件,插件和額外的樣式。

    • 支持平臺:Windows、Linux、Mac OS 等操作系統
    • 下載:sublime text 3 中文官網 - sublime text 1和sublime text 2中文版下載
    • Sublime Text 使用手冊:Sublime Text 使用手冊_w3cschool

    Sublime Text 的主要功能包括:

    • 拼寫檢查
    • 自動換行
    • 深度整合 GBK 編碼,可支持 GBK 編碼文件
    • 書簽
    • 完整的 Python API
    • Goto 功能,即時項目切換,多選擇,多窗口
    • 隨心所欲的跳轉到任意文件的任意位置
    • 右邊沒有滾動條,取而代之的是代碼縮略圖
    • 多重選擇(Multi-Selection)功能允許在頁面中同時存在多個光標
    • 支持 VIM 模式



    新手比較推薦的是 Pycharm、Jupyter Notebook,前者是目前最受歡迎的 Python IDE,可以進行專業的 python 項目開發,功能極為全面,后者是一款基于 Web 的 Python 工作臺,適合做數據分析、機器學習、可視化、教學演示,對新手非常友好。









    原文出處:xie.infoq.cn/article/75c2bbe7f58722a2f9a089424

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有