敲代码的兔子

导航

Python学习总结

Python常用的数据类型

'兔子'   字符串类型;

666   整型;

3.14   浮点型;

False,True   布尔型;

 

Python的常用操作符

逻辑运算符:and  or  not;

比较操作符:<  <=  >  >=  ==  !=;

算数操作符:+  -  *  /  //(地板除,即只保留整数位);

正负号:+x  -x;

幂运算:**(-3 **3 == -(3 ** 3 )为-27,3的三次方再取负值);

以上操作符优先级由上至下越来越高

 

Python的分支和循环

分支:

if 条件语句1:

  条件语句1成立时执行的语句

elif 条件语句2:

  条件语句2成立时执行的语句

else :

  不成立时执行的语句

循环:

while 条件语句:

  条件语句成立时执行的语句

  continue(跳出当前循环,继续下一循环)/break(跳出所有的循环)

  print("continue执行后不会执行此条语句")

for 变量名 in 列表/元组/字符串等对象集合:(for循环的目的是将对象集合中的每一个元素循环赋值给变量,即此变量遍历对象集合中的所有元素)

  print 变量名

 

列表和元组:

Python列表中可放入各种类型的数据,比如list1 = ['兔子',666,3.14,Fasle],list1[2]为3.14 

增加列表元素:list1.append('么么'),将在list1最后加入此元素;

          list1.extend(['肥兔子',88.67]),将在list1最后加入此列表,并合并为一个列表

        list1.insert(3,'yyy'),将元素插入到列表的第三个位置(从0开始,即3.14之后)

删除列表(元素):list1.remove(3.14),将3.14从list1中删除

            del list1[1],将list1中的第二个元素删除

           i =  list1.pop(3),将list1中的第四个元素删除,并有返回值,返回值即为删除的元素

列表切片:list2 = list1[0:1]  将list1前两个元素分离开组成一个新的列表,list1[:]全复制

Python元组与列表类似,但不可轻易修改

temp = (1,4,"888",False);temp = 1,4,"888",False;temp = (1,) ;temp = ()  都可以表示一个元组

修改元组的方法:temp = temp[:2]+(2,3,4)+temp[2:]   即先将元组切片再组合

 

Python字符串常用方法

str.capitalize()  将字符串首字符改为大写,等等方法

 格式化方法format:

'{0} love {1} and {2}'.format('I','dahai','you')       即将{0}{1}{2}占位符替换为参数中的字符串:I love dahai and you

或'{a} love {b} and {c}'.format(a='I',b='dahai',c='you')  也可混合使用,但数字占位符一定要在字母占位符之前

 其他格式化方法:

格式为  '方法'  %  (元组,元素数与方法数一致)

%c格式化字符及其ASCⅡ码:'%c %c' % (99,100) 打印出来是'c d',

%s格式化字符串:'%s %s %s' % ('I','LOVE','YOU')打印出为'I LOVE YOU'

字符串格式化符号含义、格式化操作符辅助指令、字符串转义字符含义

 

函数:

①定义一个函数:def Function1():

        print("这是一个没有参数的函数")

使用:Function()

无需在括号内传入参数即可执行此函数体内的方法

②定义一个函数:def Function2(num1,num2):

        return num1+num2

使用1:Function2(1,2)

num1,num2为形式参数,1,2为实际参数,这个函数的返回值是num1+num2

使用2:Function2(num2=2,num1=1)

可以讲形参和实参结合,以便于观察,防止出现顺序错误

③定义一个函数:def Function3(*param,exp):

        print("参数的长度:",len(param))

        print("第一个参数是:",param[0],exp)   #注意print方法中连接每个参数用 ‘ , ',不是‘’+‘’

使用:Function3(1,"dahai",666,99.8,True,exp = 33)

此函数为收集函数,即形参的个数无法确定,可把所有实参当做一个元祖来看待,当收集函数的参数和其他参数同时存在时(比如exp),则需要在传递实参时定义exp的值

局部变量、全局变量:

局部变量是指在函数内部的变量,函数之外无法调用此变量

全局变量是指在整个程序中都可调用的变量

def Fun1(x,y):

   z = x + y

     #globle z1

      z1 = 20

   return z

z1 = 10

z2 = Fun1(10,5)

print(z1,z2)

这里x,y,z和第一个z1为局部变量,第二个z1,z2为全局变量,且结果为10,,15,因为Fun1中的z1只在方法中生效,方法外又会指向原z1

除非在第一个z1之前加,globle z1   作用是使z1变为一个全局变量,globle(全局的),即可在函数内部修改z1的值

内嵌函数和闭包:

def fun1(x):

  def fun2(y):

    return x+y

  return fun2()

上面这种形式为闭包,即内嵌函数中有调用其外部变量,使用方法:

i = fun1(10)  #此时type(i)为方法类型function,即为fun2

i(5)      #此时传入的变量5即为fun2中的y值

或  fun1(10)(5)

不可直接使用fun2

def fun1():

  x = 10

  def fun2(y):

    nonlocal x

    x ^= x

  return fun2()

上面这个函数fun1无法直接使用,因为在调用fun1时首先调用的是其内嵌函数fun2,但fun2的x为fun1的局部变量,无法在fun2中使用,

此时需要加入类似globle的关键字nonlocal x ,作用是使x变为一个非局部变量,nonlocal(非局部的)即可使fun2访问到fun1中的x

匿名函数(lambda)

def fun1(x):

  return x * 5 +8

可写成

g = lambda x : x * 5 + 8

使用时

g(5)  #即可将5传入匿名函数g,然后通过方法计算出结果33,并返回

如果传入多个参数,则可以写为 g = lambda x,y : x + y,用英文逗号将参数分开

映射函数map():map(function,iterable) 有两个参数,第一个参数为函数,第二个参数为需要迭代的数据

目的是通过将第二个参数迭代传入第一个函数中进行计算,将得出的所有值传入一个新的列表中,比如

list(map(lambda x : x * 2 , range(10)))  将0-9之间的所有数据传入前面的匿名函数中计算,计算结果为[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

过滤器函数filter:filter(function or None,iterable)  有两个参数,第一个参数为None或函数,第二个参数为需要迭代的数据,

目的是通过将第二个参数迭代传入第一个函数中进行计算,将得出的真值传入一个新的列表中,比如

当第一个参数为函数时:

list(filter(lambda x : x % 2,range(10)))   此行代码的目的是将0-9之间的奇数传入列表中,打印结果为[1,3,5,7,9]

当第一个参数为None时:

list(filter(None,[0,1,True,False]))   输出为[1,True]  

这两个函数的区别为map()是将所有参数进行函数运算后生成新的列表,filter()是将所有参数进行函数运算后取其为真的值(1,True)生成新的列表

递归:1.有调用函数自身的行为,2.正确的返回值,且有停止的条件

比如阶乘函数:

def jiecheng(x):
  result = x
  for i in range(1,x):
    result *= i
  return result                              #此方法即x为需要阶乘的最后一位数,如x=5,需要计算1*2*3*4*5的结果

或def jiecheng(x):

  if x == 1:

    return 1

  else:

    return x * jiecheng(x-1)

比如菲波那切数列:

def fun1(n):
  if n == 1 or n == 2:
    return 1
  else:
    return fun1(n-1)+fun1(n-2)   #即从第三个数字开始每个数字等于前两个数字之和

 

字典:

dict1 = {'大海':'29','丽丽':'25','猴子':'29'}   #用‘:‘’隔开需要匹配的key(键)和value(值),用‘,‘’隔开每对映射,并用大括号括起

name = input("请输入要查询年龄的人的名字:")

print('%s的年龄是%s' % (name,dict1[name]))

创建一个字典:

①list1 = [(1,'one'),(2,'two'),(3,'three'),(4,'four')]   #列表

temp = (1,'one'),(2,'two'),(3,'three'),(4,'four')  #元组

dict(((1,'one'),(2,'two'),(3,'three'),(4,'four')))    #字典

#注意括号个数,使用方法为dict(mapping),mapping为元组或列表,但元组或列表的元素需成对出现,所以也可写成dict(list1)或dict(temp)  

②dict4 = dict(dahai=29,lili='25')

#注意只有此种方法键不能用字符串、整型、浮点型等,否则会报错,只可以用不加引号的字符串,加到字典里之后会自动变为字符串

添加项:

dict4['小海'] = '0'   #'小海'为键,且插入的位置不固定

修改项:

dict4[‘dahai’] = 31  #修改的键需存在

 

posted on 2017-06-21 13:15  敲代码的兔子  阅读(402)  评论(0编辑  收藏  举报