第三天---PYTHON函数与高级特性
在python中,定义一个函数使用def语句在缩进块里编写函数语句。返回值则使用return语句。感觉缩进块是个神奇的东西,既把代码的格式规范看起来更容易,比起其他语言还少了花括号的困扰,每个循环、分支、函数的作用域就是他们的缩进块。
接下来就用PYTHON的函数来写一个经典的求1到n之和
def sum(n):
s=0
i=1
while i<=n:
s=s+i
i=i+1
return s
相比于其他语言确实简单了许多,而py中函数的返回值可以有多个,实际上它是把所有的返回值综合成一个turple返回,例如return 1,2接收到的值实际上是(1,2)
其他的关于递归函数和复杂的多形参参数与C语言和其他编程语言都比较类似。
高级特性:1.切片 slice
切片特性就类似于java中的split函数,将一个数组或字符串分割为指定索引范围的数组或字符串
例如我定义一个数组 l=[‘1’,‘2’,‘3’,‘4’]
l(0:3) 1,2,3 输出了前三个元素,切片的范围是[a:b]= [a,b)
第一个元素的位置为0,倒数第一个元素的位置为-1
这节的作业是一个使用切片来实现trim()函数,trim函数就是将一个字符串的首尾空格都去掉后返回。自己写了一个不太成熟的仅供参考
def trim(s):
flen=0
elen=len(s)-1;
while 1:
if(s[flen]==' '):
flen=flen+1
else:
break
while 1:
if(s[elen]==' '):
elen=elen-1
else:
break
return s[flen:elen+1]
思路就是先找到首尾中第一个非空元素的位置再用切片把这一位置切下来返回。
高级特性:2.列表生成式
列表生成式的意思就是我想一次通过定义生成一个有规律的数组,类似于range(5)生成的就是1-5的数值,但如果我想生成1 4 9 16 或者 1 3 5 7 9这样有规律的数列就需要借助列表生成式。
例如生成一个长度为10的数字平方的数列
[x*x for x in range(1,11)] 相当于在1-11的range数组中的每个数的平方放到新的数组里,相当于把里面的内容当作一个语句去写,变量个数也没有限制,for x,y in 也可以
生成器与列表生成式相类似,把方括号改为圆括号就可以表示为生成器的算法,它不像列表生成式一次把整个列表都计算出来,节省了内存空间。生成器是通过保存算法,随用随调用
例如 a=(x*x for x in range(1,11))中for i in a :print(i) 同样是对这个列表进行遍历。