標籤:python學習 題目 def div 比較 int ret 控制 三次
"""題目:列印出所有的"水仙花數",所謂"水仙花數"是指一個三位元,其各位元字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。"""def answer1(): """ 正常for迴圈比較 :return: """ print("輸出一", end=":") for i in range(100, 1000): a = i // 100 b = i % 100 // 10 c = i % 10 if i == a ** 3 + b ** 3 + c ** 3: print(i, end=",")answer1()def answer2(): """ 逆向思維,有三個一位元組合成一個三位元 :return: """ print("\n輸出二", end=":") for i in range(1, 10): for j in range(0, 10): for k in range(0, 10): if i ** 3 + j ** 3 + k ** 3 == i * 100 + j * 10 + k: print(i * 100 + j * 10 + k, end=",")answer2()def answer3(): """ 通過類型轉換來擷取三位元的各位元值 :return: """ print("\n輸出三", end=":") for i in range(100, 1000): s = str(i) if pow(int(s[0]), 3) + pow(int(s[1]), 3) + pow(int(s[2]), 3) == i: print(i, end=",")answer3()def answer4(): """ 領用divmod函數來計算 :return: """ print("\n輸出四", end=":") for i in range(100, 1000): m = i sumNum = 0 while m > 0: m, n = divmod(m, 10) sumNum += n ** 3 if sumNum == i: print(i, end=",")answer4()def answer5(): """ 利用列表for if 用法來實現 :return: """ print("\n輸出五", end=":") L = [i for i in range(100, 1000) if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i] print(L)answer5()
python學習——練習題(13)