Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用python打印一系列armstrong数字显示错误_Python 3.x - Fatal编程技术网

Python 3.x 使用python打印一系列armstrong数字显示错误

Python 3.x 使用python打印一系列armstrong数字显示错误,python-3.x,Python 3.x,我是python初学者,我想创建一个程序,用于打印给定范围内的一系列armstrong数字。但是它没有显示任何东西,我无法找出我的错误。所以请看一下我的代码,帮我找出我的错误 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 = te

我是python初学者,我想创建一个程序,用于打印给定范围内的一系列armstrong数字。但是它没有显示任何东西,我无法找出我的错误。所以请看一下我的代码,帮我找出我的错误

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()

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

在Python3中,
15/10
是浮点数
1.5
,而不是Python2(或其他几种语言)中的整数
1
。要获得楼层划分(Python 2行为),您需要使用
/
操作符,或者(我的偏好)使用内置的
divmod
函数同时执行
/
%

while temp>0:
  temp, rem = divmod(temp, 10)
  sum = sum + rem**power
通过此更改,您将得到一个关于如何连接
int
str
的新错误(我认为错误因版本而异)。但解决这个问题很简单:在连接字符串之前将
i
转换为字符串

print(" " + str(i))

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

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

  • 查找该数字的剩余部分

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

  • 查找用户输入的数字的商

  • 最后,如果原始数字等于“和”,则它是阿姆斯特朗数字,否则不是

    代码如下:

    t=int(input("nos of test cases"))
    while t>0:
        num=int(input("enter any number = "))
        n=num
        sum=0
        while n>0:
            digit=n%10
            sum += digit ** 3
            n=n//10
    
        if num==sum:
            print("armstronng num")
        else:
            print("not armstrong")
        t-=1
    

    这将是一个好主意,包括您收到的错误信息。对不起,先生,我的错误。当我在r的值中输入1000时,它没有打印任何内容。感谢@trentcl的精彩解释,现在它可以工作了。再次感谢。
    t=int(input("nos of test cases"))
    while t>0:
        num=int(input("enter any number = "))
        n=num
        sum=0
        while n>0:
            digit=n%10
            sum += digit ** 3
            n=n//10
    
        if num==sum:
            print("armstronng num")
        else:
            print("not armstrong")
        t-=1