Python实例练习水仙花数问题讲解

目录
  • 1. 问题描述
  • 2. 问题分析
  • 3. 算法思路
  • 4. 代码实现
    • for循环代码实现
    • while循环代码实现

1. 问题描述

水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。

1、水仙花数是一个三位数:111 333 456 999 530

2、水仙花数的个位、十位、百位的数字立方和等于原数

小伙伴们看了问题描述后,一定要自己先练习,再去看博主的代码和解题思路,才能提高自己的编程水平,全靠自觉哟!!!

2. 问题分析

怎么获取个位、十位、百位上的数?

  • 个位数

371 :就是原始数字对10进行取余的运算结果 371 % 10 = 1

  • 十位数

371:371通过除以10,可以将7移动到个位上去(整数):371 // 10 = 37

37:37对10进行取余可以得到最后一位的值7 :37 % 10 = 7

  • 百位数

371:3就是原始数字除以100的结果(整除):371 // 100 = 3

  • 思考:任意数字的指定位置上的数值如何求?

123456789:先10000得到12345;再对10取余得到5

3. 算法思路

1. 使用循环从100开始到999结束

2. 每次的循环体内,获取百位数数字、十位数数字、个位数数字

3. 判断百位数数字三次方加十位数数字的三次方加个位数数字的三次方是否等于它本身,如果是就是水仙花数。

4. 代码实现

for循环代码实现

实现代码:

print('100到1000之前的所有水仙花数如下:')
for i in range(100, 1000):
    # 取百位数字 371 // 100 = 3
    x = i // 100
    # 取十位数 371 // 10 =3 7; 37 % 10 = 7
    y = i // 10 % 10
    # 取个位数 371 % 10 = 1
    z = i % 10
    # 判断个位、十位、百位的数字立方和等于原数
    if x ** 3 + y ** 3 + z ** 3 == i:
        print(f'{i}是水仙花数')

运行结果:

while循环代码实现

实现代码:

print('100到1000之前的所有水仙花数如下:')
number = 100
while number < 1000:
    # 取百位数字 371 // 100 = 3
    x = number // 100
    # 取十位数 371 // 10 =3 7; 37 % 10 = 7
    y = number // 10 % 10
    # 取个位数 371 % 10 = 1
    z = number % 10
    # 判断个位、十位、百位的数字立方和等于原数
    if x ** 3 + y ** 3 + z ** 3 == number:
        print(f'{number}是水仙花数')
    # 需要设置number每次加一
    number += 1

运行结果:

到此这篇关于Python实例练习水仙花数问题讲解的文章就介绍到这了,更多相关Python水仙花数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python实现水仙花数实例讲解

     1.什么是水仙花数? 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153) 详见:水仙花数-百度百科 2.实现: def number_daffodils(m=100, n=1000): if type(

  • Python判断一个三位数是否为水仙花数的示例

    如下所示: daffodil = int(input('请输入一个三位数:')) if daffodil == pow(daffodil // 100 , 3) + pow(daffodil % 10 , 3) + pow(daffodil // 10 % 10, 3): print("这是一个水仙花数%d" % daffodil) else: print("这不是一个水仙花数%d" % daffodil) 以上这篇Python判断一个三位数是否为水仙花数的示例就是

  • python使用循环打印所有三位数水仙花数的实例

    首先水仙花数是什么? 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 条件:它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). python-while

  • Python语言生成水仙花数代码示例

    水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身. 本文将通过Python代码实现打印水仙花数,具体如下: #水仙花数 #narcissistic number #水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身. #(例如:1^3 + 5^3+ 3^3 = 153) import math import string for x in range(1,10): a=x*x*x for y in range(0,10

  • python打印n位数“水仙花数”(实例代码)

    注:所谓n位数"水仙花数"是指一个n数,其各位数字n次方和等于该数本身.如三位数"水仙花数"是指一个三位数,其各位数3次方和等于该数本身. 一.3位数"水仙花数"如下:  list2=[] for i in range(100,1000): str1=str(i) sum1=0 for j in str1: num=int(j) sum1+=num**3 if i==sum1: list2.append(i) print(list2) 运行结果:

  • Python一句代码实现找出所有水仙花数的方法

    水仙花数是指一个 3位正整数,它的每个位上的数字的 3 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 下面用一句代码实现找出所有的水仙花数: 方法一: >>> >>> a = list(map(lambda x: x[1], filter(lambda x: x[0], [(i*100+j*10+k == i**3+j**3+k**3, i**3+j**3+k**3) for i in range(1, 10) for j in range(0

  • python输入一个水仙花数(三位数) 输出百位十位个位实例

    我就废话不多说了,大家还是直接看代码吧! # python输入一个水仙花数(三位数) 输出百位十位个位 """ 从控制台输入一个三位数num, 如果是水仙花数就打印num是水仙花数, 否则打印num不是水仙花数 """ """ 任务: 1.定义变量num用于存放用户输入的数值 2.定义变量gw.sw.bw分别用于存放输入的三位数的个位,十位,百位 3.定义变量total,用于存放各位数字立方和 4.用if语句判断各位

  • python求解水仙花数的方法

    本文实例讲述了python求解水仙花数的方法.分享给大家供大家参考.具体如下: 一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. #!/usr/bin/python def get_flower(n, ofile): D_pow=[pow(i,n) for i in range(0,10)] V_min=1*pow(10,n-1) V_max=sum((9*pow(10,x) for x in range(0,n))) T_count=0 print D

  • Python实例练习水仙花数问题讲解

    目录 1. 问题描述 2. 问题分析 3. 算法思路 4. 代码实现 for循环代码实现 while循环代码实现 1. 问题描述 水仙花数也被称为超完全数字不变数.自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身. 1.水仙花数是一个三位数:111 333 456 999 530 2.水仙花数的个位.十位.百位的数字立方和等于原数 小伙伴们看了问题描述后,一定要自己先练习,再去看博主的代码和解题思路,才能提高自己的编程水平,全靠自觉哟!!

  • 关于Python的GPU编程实例近邻表计算的讲解

    目录 技术背景 加速场景 基于Numba的GPU加速 总结概要 技术背景 GPU加速是现代工业各种场景中非常常用的一种技术,这得益于GPU计算的高度并行化.在Python中存在有多种GPU并行优化的解决方案,包括之前的博客中提到的cupy.pycuda和numba.cuda,都是GPU加速的标志性Python库.这里我们重点推numba.cuda这一解决方案,因为cupy的优势在于实现好了的众多的函数,在算法实现的灵活性上还比较欠缺:而pycuda虽然提供了很好的灵活性和相当高的性能,但是这要求

随机推荐