网站打开404错误怎么解决,网站开发树形图,手机网站自助建站系统,青岛君哲网站建设公司背景介绍 今天遇到这样一个额需求#xff1a;用阶乘函数求强数的 Python 程序。所谓强数#xff0c;就是一个特殊数字#xff0c;满足其所有数字阶乘的和应等于数字本身的条件。
问题描述
def facorial_of_number(number):result 1for i in range(1, number 1):result *…背景介绍 今天遇到这样一个额需求用阶乘函数求强数的 Python 程序。所谓强数就是一个特殊数字满足其所有数字阶乘的和应等于数字本身的条件。
问题描述
def facorial_of_number(number):result 1for i in range(1, number 1):result * ireturn resultdef is_strong_number(number):sum 0while number 0:rem number % 10sum facorial_of_number(rem)number // 10if sum number :return Trueelse:return Falsenum int(input(enter a number : ))if is_strong_number(num):print({0} is strong number.format(num))
else:print({0} is not strong number.format(num)) 因为事先知道145是一个强数但在这里边却硬是把145判定为不是强数这就很诡异 开启debug模式facorial_of_number(number)运行正常 并且is_strong_number(number)中求得的阶乘之和sum也是正确的145 按理说sum145输入的number145正好sum number 但是为什么debug的下一步会直接跳到else里 原因分析 哦明白了心机蛙一直在摸你肚子注意看第二张debug图啥时候number已经偷摸摸的变为0了而不是输入的那个number 145所以显然就出错了嘛 number作为参数传入is_strong_number()中在函数内就作为局部变量可以操作每一次的整除10都会使number值发生变化这样一来操作的就不再是原始的number值了。
问题解决 其实这个也好解决无非就是找一个容器把原始的number保存下来最后再拿来用就好了笔者在这里就是用这样的方法
def is_strong_number(num):sum 0number numwhile number 0:rem number % 10sum facorial_of_number(rem)number // 10if sum num :return Trueelse:return False 再次运行解决
完结撒花 之前遇到莫名奇怪的问题的时候总觉得是程序的错但是程序是人写的即使是程序的错也是人的原因冷静下来分析问题是一种非常难得的态度希望与大家共勉。
另附 bug 只要管他他就会自己修复。 希望大家的程序都能如这句话。