请用python写一个函数输出所有的水仙花数
时间: 2023-05-25 22:05:42 浏览: 77
水仙花数指的是一个 n 位数 ( n≥3 ) ,它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
下面是实现代码:
```python
def narcissistic_number():
res = []
for i in range(100,1000):
s = str(i)
if int(s[0])**3+int(s[1])**3+int(s[2])**3 == i:
res.append(i)
return res
print(narcissistic_number())
```
输出结果为:
```python
[153, 370, 371, 407]
```
这里定义了一个名为 narcissistic_number 的函数,这个函数返回的是一个包含所有三位数水仙花数的列表。在函数内部,使用了 for 循环遍历所有的三位数,然后将这个数转换为字符串类型,并取出每一位的数字进行运算。如果这个数是水仙花数,就将其加入到结果列表中。最后返回结果列表。
相关问题
Python中用函数输出所有水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如:1^3 + 5^3 + 3^3 = 153,因此 153 就是一个水仙花数。
下面是一个 Python 函数实现输出所有水仙花数的方法:
```python
def narcissistic_number():
for num in range(100, 1000):
# 求数字的位数
n = len(str(num))
# 计算每个位上的数字的n次方之和
total = 0
for digit in str(num):
total += int(digit) ** n
# 如果等于本身,则为水仙花数
if total == num:
print(num)
```
在这个函数中,我们使用 for 循环遍历 100 到 999 之间的整数。然后,我们计算每个数的位数,以及每个位上数字的 n 次方之和。如果这个和等于这个数本身,那么这个数就是一个水仙花数,我们就将它输出。
用python写一个函数 求所有n位水仙花数的个数与和
可以使用以下代码实现:
```python
def narcissistic_number(n):
count = 0
total = 0
for i in range(10**(n-1), 10**n):
num_str = str(i)
sum = 0
for j in num_str:
sum += int(j)**n
if sum == i:
count += 1
total += i
return count, total
```
函数 `narcissistic_number` 接收一个整数 `n`,返回 n 位水仙花数的个数与和。水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
在函数中,我们使用两个变量 `count` 和 `total` 分别记录水仙花数的个数和总和。然后使用两个 for 循环,第一个循环枚举所有 n 位数,第二个循环计算每个数的每个位上数字的 n 次幂之和。如果和等于这个数本身,则说明它是一个水仙花数,增加计数器 `count`,并将它的值加入总和 `total` 中。最后返回 `count` 和 `total` 即可。
例如,调用 `narcissistic_number(3)` 可以得到所有 3 位水仙花数的个数与和。
阅读全文