水仙花数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身输出所有三位水仙花的数

水仙花数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身输出所有三位水仙花的数

for i in range(100, 1000):
    if i == sum(map(lambda x:int(x)**3, str(i))):
        print(i)

有4个三位水仙花数

153
370
371
407
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/229067
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【基础入门题007】求所有三位的水仙花数
  • 除此之外, 这篇博客: 函数的声明与调用中的 6.5.3 声明一个函数,判断一个数是否是 水仙花数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • def sxh(x):
        b = int(x) // 100
        s = int(x) // 10 % 10
        g = int(x) % 10
        if b ** 3 + s ** 3 + g ** 3 == x:
            return True
        else:
            return False
    sxh = sxh(int(input("请输入水仙花数:")))
    if sxh:
        print('是水仙花数')
    else:
        print('不是水仙花数')
    
  • 您还可以看一下 吴刚老师的【吴刚】电商活动站设计初级入门标准视频教程课程中的 07-水花溅落效果的制作方法小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以给出以下解决方案:

    # 方法一:遍历所有三位数,判断是否满足水仙花数的定义
    for num in range(100, 1000):
        digit_sum = sum(int(digit) ** 3 for digit in str(num))
        if digit_sum == num:
            print(num)
    

    方法一是比较直接的遍历所有三位数,对每个数判断是否满足水仙花数的定义,如果是就输出。这里利用了 Python 的 str 类型和生成器表达式,让代码更加简洁。

    # 方法二:使用列表推导式一次生成所有符合条件的数
    result = [num for num in range(100, 1000) if sum(int(digit) ** 3 for digit in str(num)) == num]
    print(result)
    

    方法二是一次生成所有符合条件的数,并存放在列表 result 中,使用了列表推导式。

    两种方法的输出都是:

    153
    370
    371
    407
    

    这些数是满足水仙花数定义的所有三位数,可以手动验证。