自定义函数求水仙花数
时间: 2023-11-20 22:55:14 浏览: 62
以下是一个自定义函数,用于判断一个数是否为水仙花数:
```python
def isNarcissisticNumber(num):
# 将数字转换为字符串,方便按位取数
num_str = str(num)
# 计算每个位上的数字的三次幂之和
sum = 0
for i in num_str:
sum += int(i) ** 3
# 判断是否为水仙花数
if sum == num:
return True
else:
return False
```
使用该函数可以判断一个数是否为水仙花数,例如:
```python
print(isNarcissisticNumber(153)) # 输出:True
print(isNarcissisticNumber(370)) # 输出:True
print(isNarcissisticNumber(371)) # 输出:True
print(isNarcissisticNumber(407)) # 输出:True
print(isNarcissisticNumber(123)) # 输出:False
```
相关问题
python 利用自定义函数求所有水仙花数
水仙花数是指一个n位数,其各位数字的n次方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面是求解所有水仙花数的 Python 代码:
```python
def is_narcissistic_number(num):
"""判断一个数是否为水仙花数"""
n = len(str(num))
s = 0
for i in str(num):
s += int(i) ** n
return s == num
def get_narcissistic_numbers(n):
"""获取所有 n 位水仙花数"""
start = 10**(n-1)
end = 10**n - 1
narcissistic_numbers = []
for num in range(start, end+1):
if is_narcissistic_number(num):
narcissistic_numbers.append(num)
return narcissistic_numbers
# 求出所有 3 位水仙花数
print(get_narcissistic_numbers(3))
```
输出结果为:
```python
[153, 370, 371, 407]
```
如果需要求其他位数的水仙花数,只需要将参数 n 对应修改即可。
自定义函数输出水仙花数 输出宽度为5位 右对齐
以下是一个自定义函数,可以输出指定范围内的水仙花数,并且输出的宽度为5位,右对齐:
```python
def print_narcissistic_number(start, end):
"""
输出[start, end]范围内的水仙花数,并且输出的宽度为5位,右对齐
"""
for num in range(start, end+1):
# 计算每个数的位数
digit = len(str(num))
# 计算该数是否为水仙花数
sum = 0
temp = num
while temp > 0:
digit_num = temp % 10
sum += digit_num ** digit
temp //= 10
if num == sum:
# 使用字符串的rjust方法来输出宽度为5位,右对齐的数字
print(str(num).rjust(5))
```
你可以调用这个函数,传入起始值和结束值,来输出指定范围内的水仙花数。例如,如果想输出100到999之间的水仙花数,并且输出的宽度为5位,右对齐,可以这样调用函数:
```python
print_narcissistic_number(100, 999)
```
输出结果:
```
153
370
371
407
```