用python 编写程序,打印出所有的” 水仙花数”,所谓” 水仙花数” 是指一个三位数,其各位数字立方和等于该 数本身。例如:153 是一个” 水仙花数”,因为 153=1 的三次方+ 5 的三次方+ 3 的三次 方。。用三种不同的方式
时间: 2024-03-26 17:39:46 浏览: 227
好的,我可以为您提供三种不同的方法来解决这个问题。
方法一:使用 for 循环语句
```python
# 方法一:使用 for 循环语句
for i in range(100, 1000):
a = i // 100
b = (i // 10) % 10
c = i % 10
if i == a ** 3 + b ** 3 + c ** 3:
print(i)
```
方法二:使用列表生成式和 filter 函数
```python
# 方法二:使用列表生成式和 filter 函数
nums = [i for i in range(100, 1000) if i == (i // 100) ** 3 + ((i // 10) % 10) ** 3 + (i % 10) ** 3]
print(nums)
```
方法三:使用递归函数
```python
# 方法三:使用递归函数
def narcissistic_number(num):
if num < 100 or num > 999:
return False
a = num // 100
b = (num // 10) % 10
c = num % 10
if num == a ** 3 + b ** 3 + c ** 3:
return True
return False
nums = list(filter(narcissistic_number, range(100, 1000)))
print(nums)
```
以上三种方法都可以得到正确的结果,即打印出所有的水仙花数。其中第一种方法使用 for 循环语句,第二种方法使用列表生成式和 filter 函数,第三种方法使用递归函数。
阅读全文