天天看點

Python 程式設計1000例(7):水仙花數和兔生崽案例一、水仙花數二、兔生崽

文章目錄

  • 一、水仙花數
  • 二、兔生崽

本系列文章通過 1000(一篇文章表示 1 個執行個體) 個執行個體 ,為讀者提供較為詳細的練習題目,以便讀者舉一反三,深度學習。本系列的文章涉及到 Python 知識點包括:Python 語言基礎、運算符和表達式、語句和程式結構、清單和元組、字典和集合、字元串、正規表達式、函數、面向對象程式設計、子產品和包、異常處理和程式調試、檔案和目錄操作、資料庫程式設計、界面程式設計、網絡程式設計、WEB 程式設計、程序和線程、網絡爬蟲、遊戲程式設計等知識點,由易到難,由淺入深,一步步打下堅實的程式設計基礎。

本系列文章涉及的算法包括搜尋、回溯、遞歸、排序、疊代、貪心、分治和動态規劃等,涉及的資料結構包括字元串、清單、指針、區間、隊列、矩陣、堆棧、連結清單、哈希表、線段樹、二叉樹、二叉搜尋樹和圖結構等。

本系列文章是筆者為适應目前教育改革的創新要求,更好地踐行語言類課程,滿足實踐教學與創新能力培養的需要,閱讀大量書籍、各大網際網路公司的面試算法、LintCode、LeetCode、九章算法和結合筆者近幾年項目經驗編寫的系列文章,精選了 1000 個趣味性、實用性強的應用執行個體,從不同難度、不同算法、不同類型和不同資料結構等方面,将實際算法進行總結,希望為 Python 程式設計人員抛磚引玉。由于筆者經驗與水準有限,博文中疏漏及不妥之處在所難免,衷心地希望各位讀者在評論區多提寶貴意見及具體的修改建議,以便筆者進一步修改和完善。

一、水仙花數

需求:列印出 1000 以内的所有“水仙花數”,“水仙花數” 是指一個三位數,其各位數字立方和等于該數本身。例如, 153 是一個“水仙花數”,因為 153=13+53+3**3。思路分析如下:

  1. 三位數說明是從100開始進行判斷,1000以内則表示不超出1000,說明我們要從100~999逐個進行判斷,則需要使用循環語句,循環語句又分為兩種 for 和 while,for 循環更加簡潔。
  2. 有了數字之後我們需要先擷取數字各個位置上的數,然後分别對這些數進行立方,最後求和,則需要使用算術運算符進行計算。
  3. 将求和後的資料與原資料進行比較,相等則為水仙花數,否則不是,要判斷,我們就需要使用條件判斷語句。

使用 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
           

程式運作結果如下:

Python 程式設計1000例(7):水仙花數和兔生崽案例一、水仙花數二、兔生崽

使用 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}對兔子")  # 列印兔子數
           

程式運作結果如下:

Python 程式設計1000例(7):水仙花數和兔生崽案例一、水仙花數二、兔生崽

感謝您閱讀本篇博文,希望本文能成為您程式設計路上的領航者。祝您閱讀愉快!

Python 程式設計1000例(7):水仙花數和兔生崽案例一、水仙花數二、兔生崽

    好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靓的仔,就必須堅持通過學習來擷取更多知識,用知識改變命運,用部落格見證成長,用行動證明我在努力。

    如果我的部落格對你有幫助、如果你喜歡我的部落格内容,請

點贊

評論

收藏

一鍵三連哦!聽說點贊的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我部落格看看。

 編碼不易,大家的支援就是我堅持下去的動力。點贊後不要忘了

關注

我哦!