python学习——练习题(13)

Posted longphui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习——练习题(13)相关的知识,希望对你有一定的参考价值。

"""
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: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)的主要内容,如果未能解决你的问题,请参考以下文章

笨办法学 Python(第三版)习题 13: 参数解包变量

13 个非常有用的 Python 代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

python 机器学习有用的代码片段

python学习——练习题

学习笔记:python3,代码片段(2017)