【python的练习题】:1-100奇数求和(涉及匿名函数filter lambda 的使用)
题目一:
#首先 代码实现1-100奇数求和
#其次 用一行代码实现
total=0
for i in range(1,101):
if i%2==1:
total=total+i
print('total:',total)
上面的基础写法,ok. 注意点:奇数的判断条件是:i%2==1
# 姿势一:filter+lambda
print(sum(list(filter(lambda x: x%2==1, range(1, 101)))))
#姿势二:if
print(sum([x for x in range(1, 101) if x%2==1]))
print(x for x in range(1,101) if x%2==1) #打印出来其实是一个内存地址
# 姿势三:so easy
print(sum(range(1, 101, 2)))
print(range(1,101,2))# d打印结果就是:print(range(1,101,2))
print(list(range(1,101,2)))#打印结果[1,3,5.7.9,……]
============================================================
延伸阅读:lambda的介绍、filter的介绍
语法格式
lambda argument1,argument2,...argumentN :expression using arguments
1、lambda是一个表达式,而不是一个语句。
因为这一点,lambda可以出现在python语法不允许def出现的地方---例如,在一个列表常量中或者函数调用的参数中,此外,作为一个表达式,lambda返回一个值一个值(一个新的函数),可以选择性地值给一个变量名。相反,def语句总是得在头部将一个新的函数赋值给一个变量名,而不是将这个函数作为结果返回。
2、lambda 的主体是一个单个的表达式,而不是一个代码块。
lambda是一个为编写简单的函数设计的,而def用来处理更大的任务。
Example:
>>>f=lambda x,y,z: x+y+z
>>>f(2,3,4)
参照:https://www.cnblogs.com/MrFiona/p/5958916.html
>>> add = lambda x,y : x+y
>>> add(5,6)
>>> (lambda x,y:x+y)(5,6)
filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:
filter(lambda x: x%2==1, range(1, 101)) 按照lambda表达式的奇数判断条件,返回所有奇数,but直接print(filter(……))的一个内存地址,需要转换为list(),才能print 所有的奇数
参照:https://www.cnblogs.com/longdouhzt/archive/2012/05/19/2508844.html
range(101)
可以产生一个0到100的整数序列。range(1, 100)
可以产生一个1到99的整数序列。range(1, 100, 2)
可以产生一个1到99的奇数序列,其中的2是步长- 如果明确的知道循环执行的次数或者要对一个容器进行迭代(后面会讲到),那么我们推荐使用
for-in
循环 - 如果不知道具体循环次数的,推荐使用
while
循环。while
循环通过一个能够产生或转换出bool
值的表达式来控制循环,表达式的值为True
循环继续,表达式的值为False
循环结束。
参考答案: https://gitee.com/UncleYong/exercise/blob/master/sumOfOddNumber.py
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~