Python數據結構與演算法刷題(1)——害死人不償命的(3n+1)猜想

前言

其實想寫Python數據結構演算法文章很久了,相信很多讀到這裡的小夥伴還是在校學生,要面臨校招。

不管你是數據分析、數據挖掘還是機器學習,基本上都逃不過筆試數據結構演算法大題。

而國內關於Python的數據結構演算法書籍少之又少。

而從之前的連載看來,大家對課後作業積極響應並且希望多出一些刷題內容。

這就讓我想寫一些系統的關於Python刷題的文章內容。

其實經過了我的入門基礎連載和視頻,你已經具備了基礎刷題能力。

如果還沒看過我的入門基礎視頻,抽時間看一下,一天即可入門:

Python入門基礎視頻傳送門:edu.hellobi.com/course/

入門連載傳送門:

Python從零開始系列連載(35)——Python的random模塊簡單使用(入門知(姿)識(勢)學習的最後一篇(片))

當然,我也剛剛開始這項內容,希望大家共同進步。

題目選自PAT,從最簡單的開始吧。

PAT刷題多採用c、c++、java。

而我就盡量將代碼轉為Python呈現出來給大家。

如果有地方寫的不對或者繁瑣,請指出。

之後可能會在天善開一門《Python數據結構與演算法》課程,會系統的以易懂方式給大家講解數據結構演算法,備考校招演算法題和提高coding能力。

Python進階內容還是會繼續更新的(好像20天沒更新了)

害死人不償命的(3n+1)猜想

又名卡拉茲(Callatz)猜想:

對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。卡拉茲在1950年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拚命想證明這個貌似很傻很天真的命題,結果鬧得學生們無心學業,一心只證(3n+1),以至於有人說這是一個陰謀,卡拉茲是在蓄意延緩美國數學界教學與科研的進展……

我們今天的題目不是證明卡拉茲猜想,而是對給定的任一不超過1000的正整數n,簡單地數一下,需要多少步(砍幾下)才能得到n=1?

輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。

輸出格式:輸出從n計算到1需要的步數。

輸入樣例:

3

輸出樣例:

5

上代碼:

這題比較簡單,大家應該都能理解~

注意點:

1.input得到的是字元型,需要強制轉換為int

2.這裡不適合用for循環,因為不知道何時循環結束

3.記得初始化步數i=0,並且每次在循環里自增

光看不練,眼高手低可不好哦,動手敲代碼吧~

作者:王大偉 Python愛好者社區唯一小編,請勿轉載,謝謝。

出處:Python數據分析系列(1)——葡萄酒評分

小編配套免費視頻教程:Hellobi Live | 破冰入門Python

課程內容:1、Anaconda安裝 2、jupyter常用操作 3、Python基本數據類型 4、Python基本運算和表達式 5、Python程序基本控制流程(順序,分支,循環) 6、Python特色數據類型(列表,元組,字典,集合) 7、Python函數 8、Python模塊導入使用之time、random模塊 9、Python異常處理 10、Python文件操作 11、Python後續學習提升方向和建議

公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容

推薦閱讀:

學員筆記|Python數據分析之numpy入門(三)
The Django Book(最新版) —MVC設計模式
詳解python中的 is 操作符
Tornado 非同步非阻塞淺析
使用Socket控制前後端的數據交換和Web應用的資源消耗

TAG:Python | 數據結構 | 演算法與數據結構 |