我是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()
答案 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)
此程序首先要求用户输入测试用例编号,然后要求输入编号以检查它是否是阿姆斯特朗编号。 首先检查该数字是否为非零,如果是,则
查找该号码的其余部分。
查找余数的平方并存储在变量“ sum”中。
查找用户输入的数字的商。
最后,如果原始数字等于“和”,则为阿姆斯特朗数字,否则为非。
代码如下:
$table->unsignedInteger('user_id');