a[j+1],a[j]=a[j],a[j+1]printa
5,函数的定义
定义函数:
def函数名(参数1,参数2):
----(参数可有可无)
语句体
return变量----(return可有可无)
b、调用:
变量=函数名(参数1,参数2)----(变量,参数可有可无)
1、调用;2、传参;3、接收返回值
c、例子:
defadd(a,b):
printa+b
a,b=input('请输入两个数,并用逗号隔开:
')
add(a,b)
练习:
1.设计一个计算器,输入两个数,自动实现加减乘除
无参有返
#coding:
utf-8defadd():
returnx+ydefjianfa():
returnx-ydefchengfa():
returnx*ydefchufa():
returnfloat(x)/yx=input(u"请输入第一个数:
")y=input(u"请输入第二个数:
")printu"两个数的和为",add()printu"两个数的差为",jianfa()printu"两个数的积为",chengfa()printu"两个数的商为",chufa()
无参无返
#coding:
utf-8defadd():
printu"两个数的和为",x+ydefjianfa():
printu"两个数的差为",x-ydefchengfa():
printu"两个数的积为",x*ydefchufa():
printu"两个数的商为",float(x)/yx=input(u"请输入第一个数:
")y=input(u"请输入第二个数:
")add()jianfa()chengfa()chufa()
2.进阶:
根据用户输入的计算符号计算结果
注意:
float(a)/b强制类型转换
#coding:
utf-8defadd():
printu"两个数的和为",x+zdefjianfa():
printu"两个数的差为",x-zdefchengfa():
printu"两个数的积为",x*zdefchufa():
printu"两个数的商为",float(x)/zx=input(u"请输入第一个数:
")y=raw_input(u"请输入运算符号:
")z=input(u"请输入第二个数:
")ify=='+':
add()elify=='-':
jianfa()elify=='*':
chengfa()elify=='/':
ifz==0:
printu"除数不能为零请重新输入"else:
chufa()
匿名函数
可以利用lambda函数的语法:
lambda参数:
表达式,来定义函数。
让函数定义更加灵活!
lambda例子如下:
func=lambdax,y:
x+yprintfunc(3,4)
lambda生成一个函数对象。
该函数参数为x,y,返回值为x+y。
函数对象赋给func。
func的调用与正常函数无异。
以上定义可以写成以下形式:
deffunc(x,y):
returnx+y
注:
匿名函数即为有参有返型的,常用于函数的嵌套只需在嵌套中使用匿名函数
map()函数
map()是Python的内置函数。
它的第一个参数是一个函数对象。
re=map((lambdax:
x+3),[1,3,5,6])
这里,map()有两个参数,一个是lambda所定义的函数对象,一个是包含有多个元素的表。
map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。
map通过读入的函数(这里是lambda函数)来操作数据(这里“数据”是表中的每一个元素,“操作”是对每个数据加3)。
在Python3.X中,map()的返回值是一个循环对象。
可以利用list()函数,将该循环对象转换成表。
如果作为参数的函数对象有多个参数,可使用下面的方式,向map()传递函数参数的多个参数:
re=map((lambdax,y:
x+y),[1,2,3],[6,7,9])
map()将每次从两个表中分别取出一个元素,带入lambda所定义的函数。
因而map函数中可以内置函数,常与匿名函数连用。
。
或者先定义函数,再调用
Reduce()函数
也是一个内置函数
a=reduce((lambdax,y:
x+y),[1,2,3,4,5])printa
实际运算的累加。
a=reduce((lambdax,y:
x*y),[1,2,3,4,5])printa
实现运算累乘
以上是错误的。
这里的b中的值无法进行传递。
defb(*s):
//生成数组printreduce((lambdax,y:
x*y),s)//b(1,2,3)//取数
函数作为参数传递
函数可以作为一个对象,进行参数传递。
函数名(比如func)即该对象。
比如说:
deftest(f,a,b):
print'test'
printf(a,b)
test(func,3,5)
test函数的第一个参数f就是一个函数对象。
将func传递给f,test中的f()就拥有了func()的功能。
我们因此可以提高程序的灵活性。
可以使用上面的test函数,带入不同的函数参数。
比如:
test((lambdax,y:
x**2+y),6,9)
6,字符串的操作方法
下面是一些用于字符串的方法。
尽管字符串是定值表的特殊的一种,但字符串(string)类有一些方法是改变字符串的。
这些方法的本质不是对原有字符串进行操作,而是删除原有字符串,再建立一个新的字符串,所以并不与定值表的特点相矛盾。
#str为一个字符串,sub为str的一个子字符串。
s为一个序列,它的元素都是字符串。
width为一个整数,用于说明新生成字符串的宽度。
str.count(sub) 返回:
sub在str中出现的次数
str.find(sub) 返回:
从左开始,查找sub在str中第一次出现的位置。
如果str中不包含sub,返回-1
str.index(sub) 返回:
从左开始,查找sub在str中第一次出现的位置。
如果str中不包含sub,举出错误
str.rfind(sub) 返回:
从右开始,查找sub在str中第一次出现的位置。
如果str中不包含sub,返回-1
str.rindex(sub) 返回:
从右开始,查找sub在str中第一次出现的位置。
如果str中不包含sub,举出错误
str.isalnum() 返回:
True,如果所有的字符都是字母或数字
str.isalpha() 返回:
True,如果所有的字符都是字母
str.isdigit() 返回:
True,如果所有的字符都是数字
str.istitle() 返回:
True,如果所有的词的首字母都是大写
str.isspace() 返回:
True,如果所有的字符都是空格
str.islower() 返回:
True,如果所有的字符都是小写字母
str.isupper() 返回:
True,如果所有的字符都是大写字母
str.split([sep,[max]]) 返回:
从左开始,以空格为分割符(separator),将str分割为多个子字符串,总共分割max次。
将所得的子字符串放在一个表中返回。
可以str.split(',')的方式使用逗号或者其它分割符
str.rsplit([sep,[max]]) 返回:
从右开始,以空格为分割符(separator),将str分割为多个子字符串,总共分割max次。
将所得的子字符串放在一个表中返回。
可以str.rsplit(',')的方式使用逗号或者其它分割符
str.join(s) 返回:
将s中的元素,以str为分割符,合并成为一个字符串。
str.strip([sub]) 返回:
去掉字符串开头和结尾的空格。
也可以提供参数sub,去掉位于字符串开头和结尾的sub
str.replace(sub,new_sub) 返回:
用一个新的字符串new_sub替换str中的sub
str.capitalize() 返回:
将str第一个字母大写
str.lower() 返回:
将str全部字母改为小写
str.upper() 返回:
将str全部字母改为大写
str.swapcase() 返回:
将str大写字母改为小写,小写改为大写
str.title() 返回:
将str的每个词(以空格分隔)的首字母大写
str.startswith(prefix) 判断是否以prefix开头 str.endswith(suffix) 判断以suffix结尾
str.center(width) 返回:
长度为width的字符串,将原字符串放入该字符串中心,其它空余位置为空格。
str.ljust(width) 返回:
长度为width的字符串,将原字符串左对齐放入该字符串,其它空余位置为空格。
str.rjust(width) 返回:
长度为width的字符串,将原字符串右对齐放入该字符串,其它空余位置为空格。
注:
1,去重list(set(L))
L=[1,2,3,2,3,6]a=list(set(L))printa//[1,2,3,6]printset(L)//set([1,2,3,6])
2,强制转换list
a='abcd'b=('abcd','adsx','sdfasd')c=['abcd','adsx','sdfasd']printlist(a)//['a','b','c','d']将字符串转换为列表printlist(b)//['abcd','adsx','sdfasd']//将元组转为列表printlist(c)//['abcd','adsx','sdfasd']//本身为列表
3.连接多个表
xm=['zhangsan','lisi','wangwu']xb=['nan','nv','nan']score=[100,50,60]m=zip(xm,xb,score)printm//[('zhangsan','nan',100),('lisi','nv',50),('wangwu','nan',60)]forxm,xb,scoreinm:
printxm,xb,score//zhangsannan100,