程序要求用户输入一个数字N。
该程序应该显示0-em>N范围内的所有“超级数字”。在
Super number: is a number such that the sum of the factorials of its digits equals the number.
当程序显示0-em>N范围内的所有数字都是“超级数字”时,我似乎陷入了困境。我已经得出结论,我需要一个循环来解决这个问题,但我不知道如何去做。所以,举例来说,程序应该读取0-50之间的所有数字,只要数字是超级的,它就会显示出来。所以它只显示1和2,因为它们被认为是超级的
enter integer: 50
2 is super
1 is super
我写了两个函数;第一个是正则阶乘程序,第二个是对位数的阶乘求和的程序:
number = int(input ("enter integer: "))
def factorial (n):
result = 1
i = n * (n-1)
while n >= 1:
result = result * n
n = n-1
return result
#print(factorial(number))
def breakdown (n):
breakdown_num = 0
remainder = 0
if n < 10:
breakdown_num += factorial(n)
return breakdown_num
else:
while n > 10:
digit = n % 10
remainder = n // 10
breakdown_num += factorial(digit)
#print (str(digit))
#print(str(breakdown_num))
n = remainder
if n < 10 :
#print (str(remainder))
breakdown_num += factorial(remainder)
#print (str(breakdown_num))
return breakdown_num
#print(breakdown(number))
if (breakdown(number)) == number:
print(str(number)+ " is super")
现有的答案已经说明了如何完成最后一个循环,将函数连接在一起。或者,您也可以使用更多的内置函数和库,比如},为了得到数字,您可以迭代数字的字符串表示形式中的字符。在
sum
,或者{这样,问题可以在一行代码中解决(不过最好将is super check移到单独的函数中)。在
首先,我将稍微改变主代码的执行方式,将主要部分移动到
if __name__ == '__main__'
,它将在运行.py
作为主文件后执行:在这之后,你应该做些什么来循环数字看起来就更清楚了,所以不是上面提到的,而是:
^{pr2}$输入和输出示例:
小建议-您不需要在
print()
-int
中调用str()
将以相同的方式显示。在很长一段时间以来,我没有做太多的Python,但我尝试了自己的尝试来解决这个问题,我认为这个问题更具可读性。就其价值而言,我假设当你说“显示0-N范围内的所有数字”时,这是一个排他的上界,但是如果我错了,很容易使它成为一个包容的上界。在
相关问题 更多 >
编程相关推荐