6-7 使用函数输出水仙花数_一:使用函数输出水仙花数
时间: 2023-11-08 16:04:19 浏览: 164
下面是使用函数输出水仙花数的 Python 代码:
```python
def is_armstrong(num):
# 计算位数
n = len(str(num))
# 计算各位数字的 n 次方和
temp = num
sum = 0
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
# 判断是否为水仙花数
if num == sum:
return True
else:
return False
# 输出 100~999 中的水仙花数
for i in range(100, 1000):
if is_armstrong(i):
print(i)
```
代码解释:
1. 定义一个名为 `is_armstrong` 的函数,接收一个整数参数 `num`,判断该数是否为水仙花数,并返回布尔值。
2. 在函数中,首先计算 `num` 的位数 `n`,然后计算各位数字的 `n` 次方和。
3. 判断 `num` 是否等于 `sum`,如果是,则返回 `True`,否则返回 `False`。
4. 在主程序中,使用 `for` 循环遍历 100~999 中的每个数,判断是否为水仙花数,并输出结果。
输出结果:
```
153
370
371
407
```
相关问题
6-7 使用函数输出水仙花数 (20 分)
### 回答1:
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为1³+5³+3³=153。
使用函数输出水仙花数,可以先定义一个函数,判断一个数是否为水仙花数,然后在主程序中调用该函数,输出所有的水仙花数。
以下是一个示例代码:
```python
def is_narcissistic_number(num):
# 判断一个数是否为水仙花数
digit1 = num // 100 # 百位数
digit2 = num // 10 % 10 # 十位数
digit3 = num % 10 # 个位数
if digit1 ** 3 + digit2 ** 3 + digit3 ** 3 == num:
return True
else:
return False
# 输出所有的水仙花数
for i in range(100, 1000):
if is_narcissistic_number(i):
print(i)
```
运行结果:
```
153
370
371
407
```
### 回答2:
水仙花数指的是一个三位数,它的各个数字立方和等于该数本身。例如,一个三位数153,它的个位、十位和百位数字分别是1、5和3,1³ + 5³ + 3³= 1 + 125 + 27 = 153,因此153是一个水仙花数。
要使用函数输出水仙花数,我们可以定义一个函数,该函数接收一个整数作为参数,判断该整数是否为水仙花数,如果是,就输出该数。
具体实现代码如下:
```Python
def narcissistic_number(num):
"""判断一个数是否为水仙花数"""
num_str = str(num)
digits = len(num_str) # 获取数字的位数
sum = 0
for i in num_str:
sum += int(i) ** digits # 计算各个位数的数字的立方和
if sum == num:
print(num)
# 输出所有的三位数水仙花数
for i in range(100, 1000):
narcissistic_number(i)
```
在上面的代码中,我们先定义了一个名为`narcissistic_number`的函数,该函数接收一个整数`num`作为参数。函数内部先将`num`转换成字符串类型,并用`len`函数获取该数字的位数。接着用`for`循环遍历这个数字的每个位数,计算其立方和。最后判断计算出的立方和是否等于原数字,如果是,则说明该数字是水仙花数,输出之。
在代码的最后,我们使用`for`循环遍历所有的三位数,并将它们依次作为参数传递给`narcissistic_number`函数,以此输出所有的三位数水仙花数。
总之,使用函数输出水仙花数可以让代码更加清晰、模块化,也方便以后的复用和扩展。
### 回答3:
水仙花数是指一个三位数,它的各位数字的立方和恰好等于该数本身。例如,153是一个水仙花数,因为 $1^3+5^3+3^3=153$。我们可以通过编写函数来输出所有的三位水仙花数。
首先,我们要了解一个数字的每一位数字如何表示。可以使用取余和整除操作,例如,数字 $abc$ 的个位数是 $c$,可以用 $abc \% 10$ 表示。数字 $abc$ 的十位数是 $b$,可以用 $(abc // 10) \% 10$ 表示。数字 $abc$ 的百位数是 $a$,可以用 $(abc // 100) \% 10$ 表示。
然后,我们可以使用一个循环来检查每个三位数是否为水仙花数。为了输出所有三位水仙花数,我们可以定义一个空列表,每次找到一个水仙花数时,将其添加到列表中。
以下是一个Python代码示例:
```python
def narcissistic_number():
narcissistic_numbers = [] # 用于存储水仙花数的列表
for num in range(100, 1000):
a = num // 100
b = (num // 10) % 10
c = num % 10
if a ** 3 + b ** 3 + c ** 3 == num:
narcissistic_numbers.append(num)
return narcissistic_numbers
print(narcissistic_number())
```
该函数使用循环遍历所有的三位数,然后检查每个数是否为水仙花数。如果找到水仙花数,则将其添加到一个列表中,最后返回该列表。我们可以调用该函数来输出所有的三位水仙花数,得到以下结果:
```
[153, 370, 371, 407]
```
因此,所有的三位水仙花数是153、370、371和407。
6-4 使用函数输出水仙花数
水仙花数指的是一个 n 位数 (n≥3),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 就是一个水仙花数,因为 1³ + 5³ + 3³ = 153。下面是一个输出 n 位水仙花数的函数实现:
```python
def narcissistic_number(n):
for i in range(10**(n-1), 10**n):
s = 0
for j in str(i):
s += int(j)**n
if s == i:
print(i)
# 测试函数
narcissistic_number(3)
# 输出结果:153 370 371 407
```
这个函数接受一个参数 n,表示要输出 n 位的水仙花数。函数使用两层循环,外层循环从 $10^{n-1}$ 开始,到 $10^n-1$ 结束,内层循环遍历当前数的每一位并计算每一位的 n 次方和。如果最后的和等于这个数本身,则说明这个数是一个水仙花数,将其输出。
阅读全文