复制
收藏
提问
简洁
1000以内水仙花数python代码
2个月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
水仙花数,也称为阿姆斯特朗数(Armstrong number),是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为。以下是几种用Python实现寻找1000以内水仙花数的方法:
方法一:使用for循环
这种方法通过遍历100到999的所有数字,然后检查每个数字是否满足水仙花数的条件。代码示例如下:
armstrong_numbers = []
for i in range(100, 1000):
num_str = str(i)
cube_sum = int(num_str[0])**3 + int(num_str[1])**3 + int(num_str[2])**3
if cube_sum == i:
armstrong_numbers.append(i)
print(armstrong_numbers)
这段代码首先创建一个空列表armstrong_numbers
,然后使用for循环遍历100到999的数字。对于每个数字,将其转换为字符串,然后分别计算每一位的立方和,如果这个和等于原数字,则将该数字添加到列表中。最后,打印出所有找到的水仙花数56。
方法二:使用函数封装
另一种方法是将寻找水仙花数的逻辑封装到一个函数中,然后调用这个函数来打印1000以内的所有水仙花数。代码示例如下:
def find_armstrong_numbers(max_limit):
armstrong_numbers = []
for i in range(100, max_limit):
if i == sum(int(digit)**3 for digit in str(i)):
armstrong_numbers.append(i)
return armstrong_numbers
print(find_armstrong_numbers(1000))
这个函数find_armstrong_numbers
接受一个参数max_limit
,表示要检查的最大数字。函数内部使用列表推导式来计算每一位的立方和,并与原数字进行比较。如果相等,则将该数字添加到列表中。最后返回这个列表,并打印出来8。
方法三:使用列表推导式
这种方法使用列表推导式来简化代码,使代码更加简洁。代码示例如下:
armstrong_numbers = [i for i in range(100, 1000) if i == sum(int(digit)**3 for digit in str(i))]
print(armstrong_numbers)
这段代码直接在列表推导式中完成数字的遍历、立方和的计算以及条件判断,将所有满足条件的数字收集到列表armstrong_numbers
中,然后打印出来。
以上就是几种常见的用Python实现寻找1000以内水仙花数的方法。每种方法都有其特点,可以根据个人喜好和需求选择合适的实现方式。1279
你觉得结果怎么样?