使用python打印一系列阿姆斯特朗号码显示错误

时间:2017-10-03 12:42:56

标签: python-3.x

我是python的初学者,我想创建一个程序,用于打印给定范围的一系列阿姆斯特朗号码。但它没有显示任何内容,我无法找出我的错误。所以,请查看我的代码并帮助我找出我的错误。

def armstrong():
  r = int(input("Enter range :"))

  for i in range(2,r+1):
    power = len(str(i))
    temp = i
    sum = 0

    while temp>0:
      rem = temp%10
      sum = sum + rem**power
      temp = temp/10

    if sum == i:
      print(" "+i)

armstrong()

3 个答案:

答案 0 :(得分:1)

sum永远不等于i,因为temp/10没有给出您期望的答案。

在Python 3中,15/10是浮点数1.5,而不是整数1,就像在Python 2(或其他几种语言)中一样。要获得分区(Python 2行为),您需要使用//运算符,或者(我的偏好)使用内置{{1}同时执行//%功能:

divmod

通过此更改,您将收到有关while temp>0: temp, rem = divmod(temp, 10) sum = sum + rem**power int无法连接的新错误(我认为错误因版本而略有不同)。但是对于那个的修复很容易:在连接之前将str转换为字符串。

i

答案 1 :(得分:0)

def cubesum(num):
"""This functions returns a sum of the cubes of individual digits"""
r=[];s=[];sumc=0
s=list(str(num)) #converts the number into a list of string
r=list(map(int,s)) #converts the list of string into list of integers
for i in r:
    sumc=sumc+i**3
return(sumc)

def PrintArmstrong():
"""This function prints all the armstrong number from 1 to n"""
num1=int(input("enter the value of n for armstrong number search "))
for i in range(num1+1):
    if i==cubesum(i):   #checks whether i is a armstrong number. calls function cubesum()
        print("{} is a armstrong number".format(i))

这可能会有所帮助。我在这里使用两个功能。一个返回单个数字的立方的总和,另一个检查范围内的数字是否等于其单个数字的总和。

答案 2 :(得分:0)

此程序首先要求用户输入测试用例编号,然后要求输入编号以检查它是否是阿姆斯特朗编号。 首先检查该数字是否为非零,如果是,则

  1. 查找该号码的其余部分。

  2. 查找余数的平方并存储在变量“ sum”中。

  3. 查找用户输入的数字的商。

最后,如果原始数字等于“和”,则为阿姆斯特朗数字,否则为非。

代码如下:

$table->unsignedInteger('user_id');