tft每日頭條

 > 圖文

 > 用python計算前n項的階乘之和

用python計算前n項的階乘之和

圖文 更新时间:2024-08-13 15:09:37
前景

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)1

接到一個新的編程任務,

要求用Python編寫一個計算自然數n階乘的程序,用于學生利用計算機來計算n的階乘。

階乘:也是數學裡的一種術語;

階乘指從1乘以2乘以3乘以4一直乘到所要求的數;

在表達階乘時,就使用“!”來表示。如h階乘,就表示為h!

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)2

程序需要實現下面這些功能:

程序啟動後,程序在Shell窗口輸出提示信息“請輸入一個自然數,輸入quit可退出程序:”,學生輸入一個自然數,程序計算自然數的階乘,并将計算結果輸出到Shell窗口。程序再次輸出“請輸入一個自然數:”,等待學生的下次輸入。

程序需要判斷學生輸入的是否是自然數,如果不是自然數,再判斷是否是quit,若是quit退出程序,否則程序輸出錯誤提示“輸入錯誤,請輸入一個自然數或者輸入quit退出程序”。

程序的輸入與輸出:

程序的輸入是自然數n,是整數類型,輸入的來源是學生在程序運行過程中通過程序輸入。程序獲取用戶的輸入可以使用input函數,input函數返回的是字符串,如果需要輸入整數,可以使用int函數将字符串轉換為整數。

程序的輸出是自然數n階乘的結果,在程序中通過print函數來輸出自然數n階乘的結果

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)3

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)4

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)5

程序流程圖:

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)6

在流程圖中,計算自然數的階乘步驟屬于子過程,後面會給出這個子過程的流程圖。

在流程圖中,當用戶輸入quit時程序退出。在其它情況下,程序要保持運行狀态,等待用戶的輸入。前面已經學習了如何讓程序一直保持運行狀态,可以使用while循環來保持程序的運行狀态。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)7

準備使用while循環來保持程序的運行狀态,循環條件為True,循環體為計算自然數階乘的代碼,在循環體中需要判斷學生輸入的是否是quit,如果是quit,調用break語句退出循環,程序結束。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)8

還要解決一個問題,就是如何判斷學生輸入的内容是否是自然數。自然數都是由數字組成的,程序隻需要判斷學生輸入的内容是否全部是數字就可以,如果全部是數字,再使用int函數将輸入的内容轉換為整數即可。

Python的input函數返回的輸入内容是字符串,字符串的isdigit方法用于判斷字符串内容是否全部是數字,如果字符串内容全部是數字返回True,否則返回False。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)9

最後一個要解決的問題就是如何計算自然數n的階乘。要用程序計算自然數n的階乘,首先要了解自然數n階乘的計算過程,然後再把計算過程用程序來實現。

自然數n的階乘運算是所有小于及等于n的自然數的積。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)10

準備編寫一個factorial函數來實現自然數n的階乘運算,函數有一個參數n,調用factorial函數時,需要傳入參數n。

首先創建一個存儲階乘運算結果的變量result,變量初始值為1,然後使用循環範圍為1至n的for循環來計算自然數n的階乘,在每輪循環中,result都會與循環變量相乘并将乘積結果再賦值給result,當for循環結束時,result的值就是自然數n階乘的運算結果。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)11

factorial函數代碼如下:

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)12

還有一個比較疑惑的問題,就是定義函數的代碼從哪條語句開始執行?例如下面的代碼:

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)13

在上面的代碼中,第1條到第5條語句是函數factorial的函數體代碼,第6條語句是factorial函數體之後的代碼。

程序運行後,是先執行factorial函數?還是執行factorial函數體之後的第6條語句呢?

當代碼包含定義的函數時,Python解釋器不會自動執行函數代碼,隻有代碼中的語句調用函數時,Python才會執行函數代碼。因此上面的程序運行後,會先執行第6條語句,第6條語句調用了factorial函數,Python解釋器再執行factorial函數代碼。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)14

解決了上面的問題後,開始編寫代碼。

''' 模塊文件:case01.py 功能描述:計算自然數n的階乘 代碼編寫時間:2020/04/06 作者:編程訓練營 ''' # 定義階乘函數factorial def factorial(n): result = 1 for i in range(1,n 1): result *=i return result # 程序入口 if __name__ == '__main__': while(True): # 輸入提示信息 num = input("請輸入一個自然數,輸入quit可退出程序:") # 判斷num是否全部是數字 if num.isdigit(): # 調用factorial函數計算num的階乘 print("%s的階乘為:%d" % (num,factorial(int(num)))) # 判斷num是否等于quit,如果是quit跳出循環 elif num == "quit": break; # 輸出錯誤信息提示 else: print("輸入錯誤,請輸入一個自然數或者輸入quit退出程序")

代碼解讀

在三個單引号“'''”之間的内容是注釋,如果是多行注釋可以使用三個單引号“'''”封閉起來。Python的一個代碼文件也稱為一個模塊,一般來說Python程序由一個模塊或多個模塊組成,在模塊開始部分需要對該模塊進行注釋,注釋的内容主要是模塊的文件名稱、功能說明、創建時間、作者等。

factorial是定義的階乘函數,用于計算自然數n的階乘,該函數有一個參數n,調用該函數時需要傳入參數n。

語句“if __name__ == '__main__'”,用于表示該模塊為直接執行模塊,也可以說是主模塊。前面說過,一個Python程序由一個模塊或多個模塊組成,在這些模塊中,隻有一個是主模塊,該主模塊将被python解釋器直接執行模塊中的代碼,其它模塊隻有被主模塊的代碼調用後才會執行。

__name__是Python系統變量,__name__被賦值為“_main_”,表示該模塊是主模塊,其它模塊可賦值為模塊名稱。

為了保持程序的運行狀态,代碼使用了while循環結構,循環條件為True,在循環體中有跳出循環體的語句,如果學生輸入的是“quit”,調用break語句退出循環。

在循環體中,創建num變量存儲學生輸入的内容,input返回的是字符串,因此num是字符串類型的變量,可以調用字符串的isdigit方法,來判斷num存儲的内容是否全部是數字,如果是數字,調用factorial函數計算num的階乘,并輸出計算結果,否則輸出錯誤信息提示。

用python計算前n項的階乘之和(分分鐘教你學習計算自然數n的階乘)15

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved