用python实现:用尽可能多的方法实现查找所有三位水仙花数
时间: 2024-10-27 07:07:38 浏览: 56
python使用循环打印所有三位数水仙花数的实例
5星 · 资源好评率100%
在Python中,一个“水仙花数”是指一个n位数(这里指三位数),其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。以下是几种不同的方法可以实现查找所有的三位水仙花数:
**方法一:循环遍历**
```python
def find_water_lilies():
water_lilies = []
for num in range(100, 1000): # 从100到999
digits = [int(digit) for digit in str(num)] # 将数拆分成三个单个数字
if sum([digit ** 3 for digit in digits]) == num: # 检查是否满足水仙花条件
water_lilies.append(num)
return water_lilies
water_numbers = find_water_lilies()
print("找到的所有水仙花数:", water_numbers)
```
**方法二:列表推导式**
```python
def find_water_lilies_list_comprehension():
return [num for num in range(100, 1000) if sum(int(digit) ** 3 for digit in str(num)) == num]
water_numbers = find_water_lilies_list_comprehension()
print("找到的所有水仙花数:", water_numbers)
```
**方法三:生成器表达式**
```python
def find_water_lilies_generator_expression():
return (num for num in range(100, 1000) if sum(int(digit) ** 3 for digit in str(num)) == num)
# 使用next()函数获取每个元素(因为生成器不会一次性计算所有结果)
water_numbers = list(find_water_lilies_generator_expression())
print("找到的所有水仙花数:", water_numbers)
```
以上三种方法都可以找出所有的三位水仙花数,你可以选择最适合你项目需求的方式。
阅读全文