文章目錄
- 一、水仙花數
- 二、兔生崽
本系列文章通過 1000(一篇文章表示 1 個執行個體) 個執行個體 ,為讀者提供較為詳細的練習題目,以便讀者舉一反三,深度學習。本系列的文章涉及到 Python 知識點包括:Python 語言基礎、運算符和表達式、語句和程式結構、清單和元組、字典和集合、字元串、正規表達式、函數、面向對象程式設計、子產品和包、異常處理和程式調試、檔案和目錄操作、資料庫程式設計、界面程式設計、網絡程式設計、WEB 程式設計、程序和線程、網絡爬蟲、遊戲程式設計等知識點,由易到難,由淺入深,一步步打下堅實的程式設計基礎。
本系列文章涉及的算法包括搜尋、回溯、遞歸、排序、疊代、貪心、分治和動态規劃等,涉及的資料結構包括字元串、清單、指針、區間、隊列、矩陣、堆棧、連結清單、哈希表、線段樹、二叉樹、二叉搜尋樹和圖結構等。
本系列文章是筆者為适應目前教育改革的創新要求,更好地踐行語言類課程,滿足實踐教學與創新能力培養的需要,閱讀大量書籍、各大網際網路公司的面試算法、LintCode、LeetCode、九章算法和結合筆者近幾年項目經驗編寫的系列文章,精選了 1000 個趣味性、實用性強的應用執行個體,從不同難度、不同算法、不同類型和不同資料結構等方面,将實際算法進行總結,希望為 Python 程式設計人員抛磚引玉。由于筆者經驗與水準有限,博文中疏漏及不妥之處在所難免,衷心地希望各位讀者在評論區多提寶貴意見及具體的修改建議,以便筆者進一步修改和完善。
一、水仙花數
需求:列印出 1000 以内的所有“水仙花數”,“水仙花數” 是指一個三位數,其各位數字立方和等于該數本身。例如, 153 是一個“水仙花數”,因為 153=13+53+3**3。思路分析如下:
- 三位數說明是從100開始進行判斷,1000以内則表示不超出1000,說明我們要從100~999逐個進行判斷,則需要使用循環語句,循環語句又分為兩種 for 和 while,for 循環更加簡潔。
- 有了數字之後我們需要先擷取數字各個位置上的數,然後分别對這些數進行立方,最後求和,則需要使用算術運算符進行計算。
- 将求和後的資料與原資料進行比較,相等則為水仙花數,否則不是,要判斷,我們就需要使用條件判斷語句。
使用 while 語句,示例代碼如下:
# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:16.水仙花數.py
@time:2021/01/21
"""
i = 100 # 初始值
while i < 1000: # 循環100~1000以内的數
"""
求任意自然數各個位置上的數字,例如12345:
5 ==> 12345 % 10
4 ==> 1234 % 10 ==> (12345 // 10) % 10 十位就整除10 然後對10取餘
3 ==> 123 % 10 ==> (12345 // 10 // 10) % 10 百位就整除100 然後對10取餘
2 ==> 123 % 10 ==> (12345 // 10 // 10 // 10) % 10 千位就整除1000 然後對10取餘
....
以此類推...
注意:最高位就不用在對10取餘數了
"""
ge_wei = i % 10 # 取個位數
shi_wei = i // 10 % 10 # 取十位數
bai_wei = i // 100 # 取百位數
# 使用小括号進行分組優化,則邏輯的順序就非常清晰,一種良好的設計習慣
if (ge_wei ** 3 + shi_wei ** 3 + bai_wei ** 3) == i: # 判斷是否滿足水仙花數的條件
print(f"{i} 是水仙花數")
i += 1
程式運作結果如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB1ENZRVTzg2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5gjN4IzNzIjMxITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
使用 for 語句,示例代碼如下:
for i in range(100, 1000):
ge_wei = i % 10 # 取個位數
shi_wei = i // 10 % 10 # 取十位數
bai_wei = i // 100 # 取百位數
# 使用小括号進行分組優化,則邏輯的順序就非常清晰,一種良好的設計習慣
if (ge_wei ** 3 + shi_wei ** 3 + bai_wei ** 3) == i: # 判斷是否滿足水仙花數的條件
print(f"{i} 是水仙花數")
二、兔生崽
需求:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第3個月後每個月又生一對兔子,假如兔子都不死,請輸出前20個月中每個月有多少對兔子。
設計思路:兔子每個月的規律數是1、1、2、3、5、8、13、21、34…,該數列是一個斐波那契數列,即第3個數是前兩個數的和。案例完整代碼如下:
# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:17.兔生崽.py
@time:2021/01/21
"""
first = second = 1 # 定義前兩個月的個數
for month in range(1, 21): # 前20個月
if month > 2:
third = first + second # 當月的兔子數
first = second # 前2個月兔子數改為前1個月兔子數
second = third # 前1個月兔子數改為當月兔子數
print(f"第{month}個月有{third}對兔子") # 列印當月兔子數
else:
print(f"第{month}個月有{first}對兔子") # 列印兔子數
程式運作結果如下:
感謝您閱讀本篇博文,希望本文能成為您程式設計路上的領航者。祝您閱讀愉快!
好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靓的仔,就必須堅持通過學習來擷取更多知識,用知識改變命運,用部落格見證成長,用行動證明我在努力。
如果我的部落格對你有幫助、如果你喜歡我的部落格内容,請
、
點贊
、
評論
收藏
一鍵三連哦!聽說點贊的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我部落格看看。
編碼不易,大家的支援就是我堅持下去的動力。點贊後不要忘了
我哦!
關注