遍历指定范围生成强数列表时返回空列表的问题求助
问题原因
你的代码里l1和l2是全局变量,每次调用strong函数时不会自动清空,导致后续判断时会累加之前所有数字的各位阶乘总和,自然无法正确匹配当前数字,最终得到空列表。
修复后的代码
import math s = int(input("enter end range: ")) l3 = [] def strong(x): l1 = [] # 每次调用函数时重新初始化列表 l2 = [] for i in str(x): l1.append(int(i)) for i in l1: l2.append(math.factorial(i)) return sum(l2) == x for i in range(0, s + 1): if strong(i): l3.append(i) print(l3)
可选优化写法
不用额外列表存储,直接计算阶乘和,代码更简洁:
import math s = int(input("enter end range: ")) l3 = [] def strong(x): total = 0 for digit in str(x): total += math.factorial(int(digit)) return total == x for i in range(0, s + 1): if strong(i): l3.append(i) print(l3)
输入150时,输出就是预期的[1, 2, 145]。
内容的提问来源于stack exchange,提问作者Shivam
相关产品推荐
相关产品推荐

