2024-06-01 08:41:48 发布
网友
它在没有嵌套循环的情况下工作,只是为了检查输入编号是否为Armstrong编号
c=0 for y in range(1000): for x in str(y): c += int(x) ** len(str(y)) if c == y: print(c)
您的问题是变量c必须在每次迭代中清除:
c
for y in range(1000): c=0 for x in str(y): c += int(x) ** len(str(y)) if c == y: print(c)
或者您可以使用@CDJB中的变体:
for y in range(1000): if sum(int(x)**len(str(y)) for x in str(y)) == y: print(y)
因为阿姆斯特朗数是这样的数,即该数的每一位的立方体之和等于原始数。您的代码似乎将每个数字提高到n次方,其中n等于数字中的位数。以下代码将打印小于1000的阿姆斯特朗号码:
for y in range(1000): if sum(int(x)**3 for x in str(y)) == y: print(y)
输出:
0 1 153 370 371 407
从评论来看,阿姆斯特朗数字似乎有多种定义;如果您寻求其他定义,请参见下文@Mandy007的答案
您的问题是变量
c
必须在每次迭代中清除:或者您可以使用@CDJB中的变体:
因为阿姆斯特朗数是这样的数,即该数的每一位的立方体之和等于原始数。您的代码似乎将每个数字提高到n次方,其中n等于数字中的位数。以下代码将打印小于1000的阿姆斯特朗号码:
输出:
从评论来看,阿姆斯特朗数字似乎有多种定义;如果您寻求其他定义,请参见下文@Mandy007的答案
相关问题 更多 >
编程相关推荐