【人生苦短,我學Python】是衆多和計算機接觸過的朋友耳熟能詳的段子,Python作為最近幾年非常火的編程語言,因為其簡潔和開源的特點,受到許許多多人的喜愛。著名房地産商潘石屹先生也在學習Python,足以可見Python的實用性和其強大的“魅力”。
筆者自身對于Python也是十分喜愛,希望能有越來越多的朋友接觸這門語言。關于Python的學習,除了看一些課程視頻和專業書籍外,筆者認為最重要的就是練習,無論是大的項目還是小的例子,隻有在練習中不斷進行嘗試才能找到自己的“盲區”。
接下來,筆者開始今天的學習筆記分享——Collatz 序列。
Collatz 序列(奇偶歸一猜想)又稱為3n+1猜想、冰雹猜想,是指對于每一個正整數,如果它是奇數,則對它乘3再加1,如果它是偶數,則對它除以2,反複進行上述循環,最終結果都能夠得到1。為了實現上述功能,首先要定義一個函數(筆者将其命名為collatz()),它有一個名為 number 的參數。如果參數是偶數,那麼 collatz()就打印出 number // 2,并返回該值。如果 number 是奇數,collatz()就打印并返回 3 * number 1。
def collatz(num):
if num % 2==0:
return num // 2
else:
return 3 * num 1
然後編寫一個程序,讓用戶輸入一個整數,并不斷對這個數調用 collatz(),直到函數返回值1。而要實現這一功能要注意兩點,一是要記得用 int()函數将輸入的值轉成一個整數,否則它會是一個字符串,調用collatz()會失敗。二是要不斷調用collatz(),這時就需要用到“遞歸”了。
那什麼是“遞歸”呢?簡單來說就是不斷地調用自己,舉個筆者小時候聽過的例子:從前有座山,山裡有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,說從前有座山,山裡有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,從前有座山... 還有從兩面相對的鏡子中看到的畫面,其實都是抽象出來的遞歸現象。
不過這嚴格上來說并不能算是遞歸,因為會一直重複下去,沒有終止條件,那就稱為死循環了。遞歸需要終止條件的。利用遞歸的思想,可以實現很多功能,比如九九乘法表,斐波拉契數列……
回到本來的Collatz 序列這個例子,筆者定義了一個名為func()的函數,參數值為輸入的正整數。在這個函數裡調用collatz(),如果得出的值不是1,證明還沒到最後,将其打印出來,再使用遞歸的思想,調用自己,參數值為目前使用collatz()得出的值,反複進行,直到最後得出的值為1。
def func(i):
if collatz(i) != 1:
print(collatz(i))
i = collatz(i)
func(i)
else:
print(collatz(i))
到了這一步基本的功能已經實現了,不過我們還可以在輸入操作上進行一些完善,在用戶輸入數值類型錯誤時,給予提示。這裡使用try…except語句來解決輸入錯誤問題。
while True:
print("Enter number:")
try:
i = int(input())
func(i)
break
except ValueError:
print("請輸入整數!!!")
本次的分享就到這裡,今天剛好是1月1日,祝大家新的一年能夠萬事順利~
pip uninstall 2019
pip install 2020
import money
from money import beauty
from money import *
,