admin管理员组文章数量:1794759
趣味编程(一)python水仙花数易错点
山不厌高,水不厌深。每天跟着公众号学习一点python小知识,仅仅占用几分钟时间。那么一个月,一年,两年......你就成为python大牛啦
水仙花数是练习python编程是非常常见的一种练习。水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。(百度百科)
这种题目看似简单,其实非常容易出错。下面就是非常典型的错误情况。这种情况下,根本不会找到水仙花数。
for n in range(100,1001): i = n / 100 j = (n / 10 )% 10 k = n % 10 if n== i **3+ j ** 3 + k ** 3: print(n)那么问题出在哪里呢?告诉大家一个简单的调试方法。我怀疑是i,j,k取值有问题,但是不敢确定,那么我们就设置一个n=345。运行得出i,j,k的三行代码。发现结果和我们需要的不一样。
这样,我们就发现了问题的来源,我们提取每个“位”的数值时有错误,那么我们就重新写代码提取那些数值。从输出结果来看,问题的关键在于没有定义i,k,j的数据类型。我们应该把这些数据定义为整形。这样就可以进行取余运算了。
for n in range(100,1001): i =int( n / 100) j = int(int(n/10)%10) k =int( n % 10) if n== i **3+ j ** 3 + k ** 3: print(n)看,我们顺利得到了结果。为什么呢?因为我们用int做了强制类型转化,把没有定义数据类型的i,j,k转化为了整形。这样就可以取余运算了。
所以大家在运算中一定要注意数据的类型。必要的时候可以进行数据类型的转换。
扫描二维码关注公众号
图片与资源来源网站:
1 pixabay/zh/
2 www.pexels
3 picjumbo
4 fancycrave
5 www.foodiesfeed
6 www.pakutaso
7 isorepublic
参考来源:百度百科
版权声明:本文标题:趣味编程(一)python水仙花数易错点 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686831554a107985.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论