Python练习笔记 - -水仙花数

版权声明:如要转载请标记出处,谢谢合作! https://blog.csdn.net/CQDIY/article/details/83788926

题目描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3 + 5^3 + 3^3。 现在要求输出所有在m和n范围内的水仙花数。

输入描述:

输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。

输出描述:

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

示例1

输入
100 120
300 380
输出
no
370 371

解题思路&代码段

该方法事先计算好水仙花数,存放到daffodil_number列表中,然后遍历判断[m,n]区域内是否有水仙花数。该解题思路将计算水仙花数转换为查找,当然遍历计算也不错,只不过跟这种方法比起来增大了计算量,花费更多的时间。

python3

# 按"空格"拆分,并映射给m,n
m,n = map(int,input().split())
# 水仙花数,事先计算好放到解表中
daffodil_number = [153, 370, 371, 407]
# 初始化一个新的列表results,存放水仙花数
results = []
# 遍历水仙花数是否在[m,n]区间内
for temp in daffodil_number:
    if temp in range(m,n):
        #将找到的水仙花数存放到列表中
        results.append(temp)
        
#如果[m,n]区间没有水仙花数输出“no”,否则按格式输出对应的水仙花数
if len(results)==0:
    print("no")
else:
    print(" ".join(str(result) for result in results))

函数小结

map()函数

语法:
map(function, iterable, …)

描述:
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

参数说明:
function – 函数
iterable – 一个或多个序列

返回值:
Python 3返回迭代器。
**注意:**Python3中想要输出map()结果,需要转化为list()。

例1:利用map()函数求列表平方:

def fun(x):
    return x*x
print(list(map(fun, [1, 2, 3, 4, 5, 6, 7, 8, 9])))

输出结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

split()函数

语法:
str.split(str="", num=string.count(str))

描述:
split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串

参数说明:
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。

返回值:
返回分割后的字符串列表。

例2:分割字符串:

str = "this is string example....wow!!!"
print (str.split( ))

输出结果:

[‘this’, ‘is’, ‘string’, ‘example…wow!!!’]

append()函数

语法:
list.append(obj)

描述:
append() 方法用于在列表末尾添加新的对象。

参数说明:
obj – 添加到列表末尾的对象。

返回值:
该方法无返回值,但是会修改原来的列表。

例3:添加列表:

list1 = ['Google', 'Huawei', 'Taobao']
list1.append('Baidu')
print ("New list : ", list1)

输出结果:

New list : [‘Google’, ‘Huawei’, ‘Taobao’, ‘Baidu’]

join()函数

语法:
’sep’.join(seq)

参数说明:
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:
返回一个以分隔符sep连接各个元素后生成的字符串

例4:添加列表:

str = "this is string example....wow!!!"
print ('-'.join(str.split( )))

输出结果:

this-is-string-example…wow!!!

str()函数

语法:
class str(object=’’)

描述:
str() 函数将对象转化为string格式。

参数说明:
object – 对象。

返回值:
返回一个对象的string格式。

例5:添加列表:

x=987456123
y = str(x)
print(type(x))
print(type(y))

输出结果:

<class ‘int’>
<class ‘str’>

猜你喜欢

转载自blog.csdn.net/CQDIY/article/details/83788926