Python數據結構與演算法刷題(1)——害死人不償命的(3n+1)猜想
前言
其實想寫Python數據結構演算法文章很久了,相信很多讀到這裡的小夥伴還是在校學生,要面臨校招。
不管你是數據分析、數據挖掘還是機器學習,基本上都逃不過筆試數據結構演算法大題。
而國內關於Python的數據結構演算法書籍少之又少。
而從之前的連載看來,大家對課後作業積極響應並且希望多出一些刷題內容。
這就讓我想寫一些系統的關於Python刷題的文章內容。
其實經過了我的入門基礎連載和視頻,你已經具備了基礎刷題能力。
如果還沒看過我的入門基礎視頻,抽時間看一下,一天即可入門:
Python入門基礎視頻傳送門:https://edu.hellobi.com/course/234
入門連載傳送門:
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應用的資源消耗