首先说一下我是Python的初学者,如果有任何不正确或可以改进的地方,请大家多多包容
所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身,例如153=1**3+5**3+3**3,理解了题意后我们就可以明白找到水仙花的重点就在于将一个三位数的百位,十位,个位分别用一个变量保存起来,因此我们会用到各种不同的运行符号
误区代码
但问题是在取三位数的百位,十位和个位的时候我发现Python的计算有时是不准确的,它既有整数又有浮点数,更离谱的是还有0.0999994这样的数,然后我在网上查了一下发现Python在进行运算的时候使用的是二进制,所以在进行小数运算的时候经常会出现一些神奇的错误,明白了原因之后,我为了取到精确的整数,尝试了各种不同的方法,比如用Decimal方法将数字转换为10进制再进行取值,发现取到的十位数还是小数
没办法最后胡乱搞,发现运用“//”进行地板除就能取到精确的整数,有了精确的整数就能得到正确是水仙花数,然后上网查了一下发现:
" / " 表示浮点数除法,返回浮点结果;
" // " 表示整数除法,返回不大于结果的一个最大的整数
最后大概说一下思路,用循环取100-1000之间的数,然后用if语句进行判断是否为水仙花数,然后添加到一个数组中,最后打印这个数组
正确代码