- 趣味數學和Python編程
- 趙乘驥編著
- 560字
- 2022-07-29 14:35:02
7.2 實驗驗證
代碼如下:

這個程序中,有四個新的知識點要說明一下:
(1)i**2,兩個乘號連用,表示對前面的數求平方。
(2)str(n),這個函數把參數n轉換成字符串,比如輸入23這個數字,就轉換成了字符'2'和字符'3',這兩個有什么差別,數字就是2,3,不需要加引號,字符就需要加引號。進行這個轉換后,23就成了一個字符序列,所以再求平方的時候,又用int(i)把它轉換成數字。
(3)在定義sadnumber(n,past=set())時,傳入了past=set()這個奇怪的參數。其實這個參數不奇怪,它的意思是第二個參數可以不傳,不傳的情況下,它就默認傳入了一個空的集合。
(4)sum()是系統的求和函數,但是這個函數的參數是通過一個復雜的語句生成的:“int(i)**2 for i in str(n)”,這種方法叫作生成器表達式,這個語句等價于(int(i)**2 for i in str(n)),它生成了一個迭代器,與列表解析式有微妙的差異,這個特性是Python語言中比較高級的特性,讀者可以暫時放在一邊,理解其含義就可以。還是用Python的Console執行一下看看結果:

代碼的含義就是把每個數字的平方和進行累加。
程序執行完以后,我們看看20以內的憂傷的數有1,7,10,13,19,是不是與我們的常識差不多?西方人不喜歡的13也在里面,而我們常常喜歡選的2,6,8都是幸福的數,下次再看到這些數,是不是多了一些感覺?
作業:編程求階乘,并把階乘的結果放進一個表格,打印出來。