Python 3.x 使用python打印一系列armstrong数字显示错误
我是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
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))
这可能会有帮助。我在这里使用两个函数。一个程序返回单个数字立方体的总和,另一个程序检查某个范围内的数字是否等于其单个数字的总和。此程序首先要求用户输入测试用例的数量,然后要求输入数字以检查其是否为阿姆斯特朗数。 它首先检查数字是否为非零,如果是,则
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