9.编写程序,输入两个正整数m和n(100<=m<=n<1000),统计并输出m和n之间的水仙花数。要求,自定义并调用函数int flower(int num)判断其是否为水仙花数。输出格式要求:从小到大排列在一行内输出,之间用一个空格隔开;当m和n之间无水仙花数,则输出为“No”。
时间: 2023-05-28 18:06:44 浏览: 166
```python
def flower(num):
"""判断一个数是否为水仙花数"""
# 将数字分解为个位、十位、百位
a = num // 100
b = (num // 10) % 10
c = num % 10
# 判断是否为水仙花数
if num == a ** 3 + b ** 3 + c ** 3:
return True
else:
return False
m, n = map(int, input().split())
result = [] # 存储水仙花数
for i in range(m, n+1):
if flower(i):
result.append(i)
if result:
print(*result) # 使用*号将列表中的元素拆分为多个参数
else:
print("No")
```
解析:
1. 定义了一个函数`flower`,用于判断一个数是否为水仙花数。函数的传入参数为一个整数,返回值为布尔型。该函数的实现原理为:将数字分解为个位、十位、百位,判断是否满足水仙花数的定义。
2. 输入两个正整数`m`和`n`,并将它们转换为整型。定义一个空的列表`result`,用于存储水仙花数。
3. 使用`for`循环遍历从`m`到`n`之间的所有整数,对于每一个整数,调用`flower`函数判断是否为水仙花数。如果是水仙花数,则将它加入到`result`列表中。
4. 判断`result`列表是否为空。如果不为空,则将列表中的所有元素输出,使用*号将列表中的元素拆分为多个参数,输出时中间用空格隔开。如果为空,则输出"No"。
阅读全文