先来了解一下什么是水仙花数。水仙花数是这样一个三位数:它的个位数、十位数、百位数的三次方之和,等于它自身。例如,153就是一个水仙花数,因为153=1^3+5^3+3^3。470也是一个水仙花数,因为470=4^3+7^3+0^3。

我们今天的任务就是,编程求100到999之间所有的水仙花数。

那么这个题目的关键就是,给定一个三位数abc,如何获得它的个位数c,十位数b,百位数a?

我们先来看第一种解决方案,也是最主流的解决方法:数位分离。

以153为例,我们先看,如何获得它的个位数3?只要%10就可以了:

153%10=3

通过模10运算,我们将个位数3分离了出来。

那么如何分离十位数5?先将十位数挪到个位,再利用%10,不就可以分离出来了吗?

通过除以10向下取整,可以将十位数挪到个位上来:

153//10=15

再利用模运算分离个位上的10即可:

15%10=5

这样我们就获得了十位数5.

同理,如果想得到153的百位数,将153除以100向下取整即可:

153 // 100 = 1

这就是数位分离的思想,先得到要验证的总数,再将各个位数分离出来。

代码实现如下:

for num in range(100,1000):

hundred=num//100

ten=(num//10)%10

single=num%10

if num==hundred**3+ten**3+single**3:

print('%d是一个水仙花数'%num)

这种方法逻辑很清晰,不过若是没见过这种解法的人,第一次怕是想不到数位分离的方法。其实,初学者更容易理解顺向思维的解法。

设个位数为a,十位数为b,百位数为c,则总数为a+10b+100c

判断a^3+b^3+c^3 == a+10b+100c即可。

for a in range(10):

for b in range(10):

for c in range(1,10):

sum = a + 10*b + 100*c

if a**3 + b**3 + c**3 == sum:

print("%d是一个水仙花数"%sum)

还有一种方法,可以利用字符串的特性,轻松地实现三个位数上的提取:

先将这个三位数转换成字符串,通过下标就可以提取个位、十位、百位数。再将提取出的字符转换成int型即可。

代码如下:

for num in range(100,1000):

s=str(num)

hundred=int(s[0])

ten=int(s[1])

digit=int(s[2])

if num==hundred**3+ten**3+digit**3:

print(num)

水仙花数python代码多种方式_水仙花数的三种解决方法(Python实现)相关推荐

  1. 执行python代码的方式_涨见识了,在终端执行 Python 代码的 6 种方式!

    译者:豌豆花下猫@Python猫 为了我们推出的 VS Code 的 Python 插件 [1],我写了一个简单的脚本来生成变更日志 [2](类似于Towncrier [3],但简单些,支持 Mark ...

  2. 应用程序错误电脑黑屏_电脑运行程序出现APPCRASH错误的三种解决方法

    好多小伙伴说电脑在运行程序时出现appcrash错误,导致软件无法正常运行,其实电脑是很复杂的程序代码设计的,遇到一些奇怪的问题也不奇怪,系统运行程序出现APPCRASH错误,很多新手用户都不知道怎么 ...

  3. 使用小乌龟TortoiseGit快速解决代码冲突的三种解决方法:

    使用小乌龟TortoiseGit快速解决代码冲突的三种解决方法: 1.Resolved:手动查看并解决完冲突以后使用. 2.Resolve conflict using "CHERRY_PI ...

  4. python中保留小数_python保留小数位的三种实现方法

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  5. java url 传值乱码问题_解决URL传递中文时出现乱码问题(三种解决方法)

    一.问题场景 一般在使用下面几种使用场景情况下,传递参数为中文时,接收得到的值都有可能乱码,具体如下: 1.直接在浏览器使用url地址访问 2.页面提交form表单时,method设置为GET 3.使 ...

  6. python交互式方式、代码文件方式_涨见识了,在终端执行 Python 代码的 6 种方式

    原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...

  7. python代码文件方式_关于.py文件的详细介绍

    这篇文章主要给大家介绍了在Python中.py文件打包成exe可执行文件的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧.前言最近做了几个简单的爬虫pytho ...

  8. python 代码转程序_如何用pyinstaller把自己编写的python源代码转换成可执行程序?...

    昨天慢步熬夜写了一篇干货满满的文章,不知道什么原因,文章并未被推荐. 今天再来换个方式写一次. 把自己编写的python源代码转换成可执行程序 笔者继续用自编的<货币兑换程序3.0>为例. ...

  9. python编程剪刀石头布思路_剪刀石头布小习题三种语言python2、php、go代码

    剪刀石头布小习题三种语言python2.php.go代码 # coding:utf-8 """ python核心编程6-14习题的解题思路 设计一个"石头,剪子 ...

最新文章

  1. Fedora 32 因 Bug 将推迟发布
  2. oracle单表数据量上亿_MySQL数据库中,数据量越来越大,有什么具体的优化方案么?...
  3. kindle 3快捷键
  4. 现代软件工程讲义 11 项目管理 - 事后诸葛亮会议
  5. java http2_探索HTTP/2: HTTP 2协议简述(原)
  6. java数组代表unicode值么,02-Java的数组
  7. css的3d注意事项
  8. HTML项目代码编写规范
  9. impala查询数据与hive的查询数据比对(数据的校验)
  10. 学习python3(一)
  11. Kronecker 定理
  12. JavaScript·函数
  13. matlab矩阵乘法不同行,矩阵乘法在numpy/matlab/数学上的不同
  14. Vant(有赞)UI框架爬坑记——图片轮播+预览
  15. SylixOS --- RMS调度详解
  16. Console密码恢复出厂设置
  17. 技术经理成长复盘-处理线上问题
  18. python抢优惠券程序_python3 优惠券查询GUI程序
  19. html设置字段只读,html怎么设置只读
  20. rstudio 修改代码间距_R语言入门:使用RStudio的基本操作

热门文章

  1. php验证码无法验证问题,php无法显示验证码
  2. 基于medianflow的半自动标注数据程序
  3. 服务器硬盘插拔原理拆解,如何正确拆除在 ServeRAID适配器控制着的热插拔硬盘...
  4. 论文笔记--Self-Supervised Learning of 3D Human Pose using Multi-view Geometry(利用多视角几何学对三维人类姿势进行自我监督学习)
  5. linux双网卡网桥转发,Linux网桥实现
  6. Windows 系统上查询 NVIDIA GPU 型号、CUDA 版本和驱动程序版本
  7. v.douyin.com生成制作抖音缩短口令网址php接口方法
  8. 搭建游戏平台用哪里的高防服务器比较好
  9. 【Matlab瑕疵检测】阙值瓶盖瑕疵检测【含源码 730期】
  10. 计算机专业必须知道的东西——C语言的发展