溫文默克的學習筆記Python篇(1)——Collatz 序列

【人生苦短,我學Python】是眾多和計算機接觸過的朋友耳熟能詳的段子,Python作為最近幾年非常火的編程語言,因為其簡潔和開源的特點,受到許許多多人的喜愛。著名房地產商潘石屹先生也在學習Python,足以可見Python的實用性和其強大的“魅力”。

溫文默克的學習筆記Python篇(1)——Collatz 序列

筆者自身對於Python也是十分喜愛,希望能有越來越多的朋友接觸這門語言。關於Python的學習,除了看一些課程視頻和專業書籍外,筆者認為最重要的就是練習,無論是大的項目還是小的例子,只有在練習中不斷進行嘗試才能找到自己的“盲區”。

接下來,筆者開始今天的學習筆記分享——Collatz 序列

溫文默克的學習筆記Python篇(1)——Collatz 序列

Collatz 序列(奇偶歸一猜想)又稱為3n+1猜想、冰雹猜想,是指對於每一個正整數,如果它是奇數,則對它乘3再加1,如果它是偶數,則對它除以2,反覆進行上述循環,最終結果都能夠得到1。為了實現上述功能,首先要定義一個函數(筆者將其命名為collatz()),它有一個名為 number 的參數。如果參數是偶數,那麼 collatz()就打印出 number // 2,並返回該值。如果 number 是奇數,collatz()就打印並返回 3 * number + 1。

<code>def collatz(num):
    

if

num %

2

==

0

:

return

num

else

:

return

3

* num +

1

/<code>

然後編寫一個程序,讓用戶輸入一個整數,並不斷對這個數調用 collatz(),直到函數返回值1。而要實現這一功能要注意兩點,一是要記得用 int()函數將輸入的值轉成一個整數,否則它會是一個字符串,調用collatz()會失敗。二是要不斷調用collatz(),這時就需要用到“遞歸”了。

溫文默克的學習筆記Python篇(1)——Collatz 序列

那什麼是“遞歸”呢?簡單來說就是不斷地調用自己,舉個筆者小時候聽過的例子:從前有座山,山裡有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,說從前有座山,山裡有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,從前有座山... 還有從兩面相對的鏡子中看到的畫面,其實都是抽象出來的遞歸現象。

溫文默克的學習筆記Python篇(1)——Collatz 序列

不過這嚴格上來說並不能算是遞歸,因為會一直重複下去,沒有終止條件,那就稱為死循環了。遞歸需要終止條件的。利用遞歸的思想,可以實現很多功能,比如九九乘法表,斐波拉契數列……

回到本來的Collatz 序列這個例子,筆者定義了一個名為func()的函數,參數值為輸入的正整數。在這個函數里調用collatz(),如果得出的值不是1,證明還沒到最後,將其打印出來,再使用遞歸的思想,調用自己,參數值為目前使用collatz()得出的值,反覆進行,直到最後得出的值為1。

<code>def 

func

(i)

:

if

collatz(i) !=

1

:

print

(collatz(i)) i = collatz(i)

func

(i)

else

:

print

(collatz(i))/<code>

到了這一步基本的功能已經實現了,不過我們還可以在輸入操作上進行一些完善,在用戶輸入數值類型錯誤時,給予提示。這裡使用try…except語句來解決輸入錯誤問題。

<code>

while

True

:

print

(

"Enter number:"

)

try

: i = int(input())

func

(i)

break

except

ValueError

:

print

(

"請輸入整數!!!"

)/<code>

本次的分享就到這裡,今天剛好是1月1日,祝大家新的一年能夠萬事順利~

pip uninstall 2019

pip install 2020

import money

from money import beauty

from money import *


分享到:


相關文章: