Python編寫1+2+3+······+n的值代碼如下:遞歸求和
n = int(input())
jie = 1
sum = 0
i = 1
while n >= i:
jie = jie * i
sum = sum + jie
i = i + 1
print(sum)
聽過課的來做下筆記。有幾種思維,一種是像物理這種實證思維,一種是以數學為代表的數學思維,另外一種可能就是題主關注的以算為代表的計算思維了。
我希望能授之以漁,所以Follow my step。想想你平時是怎么求0~100的和的?
我能直接想到的方法是一個一個地加。1+2+3+...+100=?
那么用python寫就是這樣的:
比如說你要一個result的變量來存最后的運算結果,那必定是這樣:
result=1+2+3+4+5+6+7+8+...(我寫不下去了)+100
那一定不是一種明智的方法,因為計算機可以循環執行代碼段:
result=0
for i in range(1, 101):
result = result + i
print result
這個循環的意思就是每次從1-100的范圍中取出每個數,存入i中
然后每次把取出的i加到result里面。這樣一輪過后,result就被加了從0~100。這樣就可以了。
還有一種方法是運用了數學思維,就是等差數列的求和公式:首相加尾項的和乘以項數再除以2。
因此可以寫成
result = (1+100)*100/2
print(result)
這種就是數學思維。實際上計算機很擅長重復做一件事情。第二種寫法不能說不好,只是說他沒有發揮計算機的優勢。
所以遇到一個要用計算機解決的問題,思路就是想想如果你是計算機,你應該怎么做。這樣就能找到一個最容易理解的算法,然后去實現它。你就成功了。
強烈推薦一本免費算法書《用Python解決數據結構與算法問題》。學 Python 僅僅只學 Python 語法和 API 是遠遠不夠的,掌握算法和數據結構這種永遠都不會過時的核心技能才是決定一個程序員職業發展的關鍵因素。算法和數據結構對專業程序員來說重要性不言而喻,同樣一個問題,不同算法效率可謂千差萬別。在問題規模很小的時候你可能感知不到,但是一旦數據上升到TB級別,兩者的差距就像西瓜和芝麻的差別了。
舉個簡單例子:我們要計算前n個整數之和,你最先想到的算法可能是迭代。代碼非常直觀,初學者都能讀懂,就是從1累加到n,得到最后的結果。這種算法的效率隨著n的增加而變化,時間復雜度是O(n),線性時間,大O表示法指出了最糟糕情況下的運行時間。
想象一下,這個數足夠大的時候,所耗費的時間將是無法估量的,當然,還有很多比線性時間更糟糕的算法。當然,最后還有一種最理想的算法,就是常數級別的,O(1) 常數級復雜度。也就是說程序運行的時間與需要處理的數據大小無關。
如果利用數學方程而不是迭代來計算前n個整數的和,他的復雜度就是 O(1)。下非常榮幸回答您的提問,下面是這本書的目錄,希望對您有幫助!
利用Python進行數據分析,既可以做常規的統計分析,也可以利用機器學習算法進行數據挖掘。
下面分享一個Python數據分析案例:用Python爬取騰訊課堂“前端開發”品類下的課程數據,然后做數據分析,并進行可視化。
整個數據分析過程,主要做了以下3件事情:
數據采集:利用requests實現Python爬蟲數據清洗:正則表達式、數據類型轉換。數據分析:分組統計、數據可視化。在騰訊課堂首頁,選擇“前端開發”品類,打開頁面如下所示。1.數據采集:利用requests實現Python爬蟲利用Python爬蟲爬取騰訊課堂“前端開發”品類下33頁的課程數據。
以上代碼執行完畢后,查看數據。
從上面看到,共采集到792條記錄。
2.數據清洗:正則表達式、數據類型轉換針對上述采集到的數據,需要做以下事情:
購買人數:只關心其中的數字,需要把其中的非數字符號去除。
價格:只關心其中的數字,需要把免費替換為0,有價格的里面的人民幣符號¥去除。
清洗思路:利用正則表達式替換。
有了思路后,下面通過for循環處理所有數據。
以上只是把無關的符號去除了,但是數據類型還有問題,通過type查看可以發現,購買人數及價格雖然是數字,但其實是字符串類型,所以還需要通過astype進行類型轉換。
經過以上處理,可以看到購買人數、價格都被轉換成了數值型。
3.數據分析:分組統計、可視化首先通過describe函數對數據進行描述性統計分析。
說明:加上include參數可以讓所有字段都顯示,包括非數值型字段。
對該品類(前端開發,以下簡稱該品類)的描述性統計分析可以看出:
總共有10個教育機構提供了792門課程。報名人數最多的一門課程有6156人報名,最貴的一門課程價格為15698元。該品類下的課程的平均報名人數為1451人,平均價格為681元。以下按照“機構”進行分組統計。
還可以通過matplotlib進行數據可視化。
以下展示的是報名人數前10的教育機構。
以下通過餅圖展示每個機構的課程數。
還可以通過折線圖展示每個機構的報名人數。
回答完畢!