python封装函数实现水仙花数
时间: 2023-05-11 12:07:18 浏览: 151
以下是 Python 封装函数实现水仙花数的代码:
```python
def narcissistic_number(num):
"""
判断一个数是否为水仙花数
"""
# 将数字转换为字符串,方便计算位数
num_str = str(num)
# 计算位数
n = len(num_str)
# 计算每一位的 n 次方之和
sum = 0
for i in num_str:
sum += int(i) ** n
# 判断是否为水仙花数
if sum == num:
return True
else:
return False
```
使用方法:
```python
# 判断 153 是否为水仙花数
print(narcissistic_number(153)) # True
# 判断 123 是否为水仙花数
print(narcissistic_number(123)) # False
```
希望能对您有所帮助!
相关问题
python使用map函数实现水仙花数
要使用`map`函数实现水仙花数,可以按照以下步骤进行:
1. 首先,定义一个函数,用于判断一个数字是否为水仙花数。水仙花数是指一个n位数,其各个位上的数字的n次方之和等于该数本身。
```python
def is_armstrong_num(num):
n = len(str(num))
sum = 0
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
return sum == num
```
2. 接下来,使用`map`函数将这个函数应用到一个数字序列上,以判断序列中的每个数字是否为水仙花数。
```python
nums = range(100, 1000) # 三位数范围
armstrong_nums = list(map(is_armstrong_num, nums))
```
这样,`armstrong_nums`列表中的每个元素都表示对应数字是否为水仙花数。`True`表示是水仙花数,`False`表示不是。
完整代码如下:
```python
def is_armstrong_num(num):
n = len(str(num))
sum = 0
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
return sum == num
nums = range(100, 1000) # 三位数范围
armstrong_nums = list(map(is_armstrong_num, nums))
print(armstrong_nums)
```
在上述代码中,我们将`nums`定义为一个包含100到999之间所有三位数的范围对象。然后,使用`map`函数将`is_armstrong_num`函数应用到这个范围上,并将结果转换为列表。最后,打印出结果。
python编写函数判断水仙花数
当一个 3 位数等于其各位数字的立方和时,它被称为水仙花数。可以用以下 Python 函数来判断一个数是否为水仙花数:
```python
def is_armstrong(n):
# 将数字转化为字符串,计算位数
num_digits = len(str(n))
# 计算各位数字的立方和
armstrong_sum = sum([int(digit)**num_digits for digit in str(n)])
# 判断是否为水仙花数
if armstrong_sum == n:
return True
else:
return False
```
示例:
```python
>>> is_armstrong(153)
True
>>> is_armstrong(370)
True
>>> is_armstrong(371)
True
>>> is_armstrong(407)
True
>>> is_armstrong(123)
False
```