pyhon笔记(二)

学习python的十步;
(一)了解历史背景
1.快速入门python:
    (1)字符串之间用'+'作为拼接符号;
    (2)语句结尾不能用';'结尾;
    (3)必须用Tab键缩进,不然报错;
    (4)严格区分大小写;
    (5)\是python的转义字符,\n表示换行;\在行尾是表示续行符,\b退格,\000空,\r回车,\t空白;
    (6)注释:单行注释#,多行注释(也具有换行的意义)'''......'''/"""...."""";
(二)搭建开发环境
1.主要运用:云计算,web开发,科学运输人工智能,系统运维,金融量化交易,图形CUI;
2.是一门动态解释性语言;
(三)变量和常量
1.常量:用全大写字母表示常量,如PI(π)和E(自然数);
2.变量:不需要任何申明符号,变量名=值;必须赋值,否则输出报错;
    (1)变量名的申明,由数字,字母,_组成,字母必须在首位,包括下划线命名法则和驼峰法则;
    (2)变量赋值,是将值类型的地址赋值给变量,所有将一个变量赋值给另一个变量是将地址赋值给它,当值改变时,2个变量的值都会改变,但是
        如果用分片的方式完全赋值给另一个变量,两个变量指向不同的地址,虽然值相同;也可以import copy 然后调用x=copy.copy(y)两个
        变量地址不同,值相同;
(四)数据类型
1.数值Number:
    (1)包括整型int,浮点型float,复数complex,无穷数等;其中整型有正付之分,没有大小的限制,浮点型也可用科学计数法表示,浮点型数相+,
            -,*,/,%,//结果也是浮点型;复数由实部+虚部构成(a+bj/complex(a,b)),实部和虚部都是浮点型;浮点数进行算术运算结果
            是浮点类型。注意浮点数的溢出,更精确的是小数对象Decimal(十进制的固定精度的小数),需要导入模块;长整数无限大以L结尾;
    (2)import math引用math模块;
            math.pi,math.e(科学计数法);
            math.sin(n*2*math.pi/180),正弦值;
            math.sqrt(num),请平方根;
            abs(num),求绝对值;
            pow(2,4),求2的4次方;
            int(num),取下整数;
            round(num[,n]),四舍五入保留n为小数;
    (3)import random引用了随机模块;
            random.random();随机生成0~1直接的小数;
            random.randint(1,100);随机生成指定的1~100直接的整数;
            random.choice(列表);表示从列表中随机选取一个元素;
    (4)浮点小数,在计算时容易产生浮点溢出,计算的结果不会很精确;所有可以通过引入小数对象模块,更精确的计算小数结果;
            from decimal import Decimal 引入小数对象模块或import Decimal,可以数学运算;
            Decimal('0.1')+ Decimal('0.1')+ Decimal('0.1')      //结果为Decimal('0.3')精确结果
            0.1+0.1+0.1             //结果为0.300000000004不精确
2.字符串String:
    (1)以单引号/双引号开始和结束;‘+’可以作为字符串的拼接符号,注意空格可以用空字符串" "或关键字space来表示;
    (2)是python中最常见的数据类型,字符串不能修改,所以不能做分片赋值;
    (3)字符串格式化符号:%;'%f%%'100%和'%s'%'100%'表示输出一个100%,
        1)%s,表示格式化字符串,如'小米今天%s岁了'%10 =>表示小米今天10岁了;
        2)%d,表示格式化整数,如'小米今天%d岁了'%10 => 表示小米今天10岁了;
        3)%f,表示格式化浮点数,可指定精度,'PI:%f'%3.14=>3.140000  不指定精度默认6位数;%.2f表示指定2位小数;
        4)%10.2f%,表示指定2位小数,并保留10位长度,不足的前面空格补齐10位字符长度,10前面可以是0,-,+表示用0补位,在输出字符串
               左边补位,在输出的字符串右边前面补位;
        5)'%+5d'%10表示+10;'%+5d'%-10表示-10;
    (4)字符串方法:
        1)str.find(str1[,start,end]);表示从start开始到end结束查找str中存在的子字符串str1,返回找到的位置,没找到返回-1;不写
               start,end参数表示0开始和到末尾;
        2)字符串连接符.join("全字符串类型的列表/全字符串类型的元祖/序列"),全字符串不然报错;
        3)str.lower()无参数,表示将字符串中所有的大写字符串转换为小写;
        4)str.upper()无参数,表示将字符串中所有的小写转换为大写;
        5)str.swapcase()无参数,将字符串中大写变小写,小写变大写;
        6)str.replace(old,new[,max]),表示把字符串中旧的子字符串替换成新的字符串,替换次数最多不能超过max次;
        7)str.split([st[,num]]),表示把字符串str按照st(默认为空格切割符,也可为str中的单个字符,切割后不包括该单个字符,如果剩余
               字符串中由空格仍然保留)切割,切割num次,返回切割后剩余字符串组成的列表;
        8)str.isalpha()无参数,测试str字符串里面是否是纯字符组成的字符串,返回true/false(纯数字字符串返回false);
        9)str.rstrip()无参数,去掉字符串后面的空格(包括\n换行符);
        10)dir (str),表示罗列出字符串的所有属性和方法函数;
        11)help (str.属性/方法),表示获取字符串的某个属性/方法的具体功能解释;
        12)import re;表示引用re模块,re.match()表示调用re模块中的match函数方法/属性;
3.列表List:支持所有字符串的操作方法;列表的元素值不区分类型;
    (1)索引:序列是python中最基本的数据类型;序列中每个元素都有一个下标,从左到右下标从0开始,从右到左从-1开始;序列a[i]表示获取
              序列a的第i个下标的元素,即称为索引操作;
    (2)分片:即获取序列项/字符串/列表/元祖等中的一段子结构,a[start:end[,step]],含头部含尾,可为正/负数字索引;不写start/end参数表示
              从0开始/到结尾结束;step表示步长不写默认为1,即从start开始,第二个数是start+step,后面依次论头推;
    (3)序列相加:同类型的序列相'+',直接拼接即可;不同类型的序列相'+',结果报错;
    (4)乘法:字符串/序列*数值,即重复数值次形成新的字符串/序列;如:'string'*2 => 'stringstring',[1,2]*2 => [1,2,1,2];
    (5)长度/最小值/最大值:max(a),min(a),len(a)分别表示序列a中的最大值/最小值/元素个数;
    (6)列表list:序列的类型元素值可以不同,对列表的操作有增删该查等;
        1)改:list[i]=值;表示修改序列下标为i的原值为新值,如果不存在就报错;
        2)增:list.append[值],表示向列表list尾部添加一个新值;
        3)删:del list[i];删除列表中第i个值,如果不存在就报错;
        4)分片赋值:list('string')表示将字符串string分片成['s','t','r','i','n','g'];list[2:n]=['a','c'];表示将list列表中2
                    到n-1项被后面的['a','c']替代了;
        5)列表的嵌套:即列表之中还包含列表,多级列表;[1,2,[4,2]];多级列表的矩阵处理 for ..in..;
        6)列表的方法:
                len(list)表示获取列表的元素个数(长度);
                list.append(obj)表示在列表末尾添加新元素对象;
                list.count(obj)表示查询obj元素在列表中出现的次数;
                list.extend(seq)表示在列表的末尾添加另一个序列形成一个新序列,不会改变原序列;
                list.index(obj)表示从列表中找出某个值obj第一次出现的位置下标,如果不存在就会报错;
                list.insert(index,obj)表示在列表index的位置插入obj对象元素,改变原列表;原index位置之后的元素依次后移动一位;
                list.pop(i)表示移除list中i位置的元素,不写表示移除最后一位,返回移除后的元素;
                list.remove(obj)表示移除list列表中第一次出现的obj元素对象,移除不存在的对象会报错;
                list.reverse()无参数,表示将列表list反序列;
                list.sort()不写参数,表示将列表list升序排列;list.sort(key=len)表示按装字符串由短到长排列,list.sort(key=len,
                            reverse=True)按照字符串由长到d短排列;
                list.clear()无参数,表示清空list列表;
                list.copy()无参数,表示赋值列表list成一个新的列表,相当于list[:]不写参数;
4.元组Tuple:
    (1)与列表相似,不同之处元祖的值不能修改;用逗号','分隔一些值,就会自动创建元祖,通常可以用()包裹元祖值;
    (2)对元祖的操作:
        1)查:元祖a[i]表示查找元祖i位置的值;
        2)改:元祖a+元祖b拼接形成一个新的元祖;
        3)删:del a 表示删除整个元素,不能删除元素值,但是可以删除整个元祖;
        4)元祖的索引,截取:a[start:end],含头不含尾,表示截取元祖形成子元祖;
        5)元祖的内置函数:len(a),max(a),min(a),tuple(seq),分别表示元祖a的个数,最大值,最小值,已经将列表seq转换为元祖;
5.集合Sets:即其他对象的集合,支持数学的集合运算;
    (1)x=set('abcde'), 创建一个集合即x 输入结果为{'a','b','c','d','e'}元素的顺序不固定;
         y=set('bdxyz'),x-y表示从x中抛出与y共同的元素,返回剩下的元素;
                        x|y表示数学中xUy,返回结果是x,y累加,相同的只出现一次;
                        'a' in x表示判断a是否是x的元素,返回true/false;
                        x&y 表示数学中xNy,返回结束时x,y共有的元素集合;
    (2)x=set(['ace','tom','te','ss'])
         y=set(['ace','af','ced'])   集合的另一种方式,x,y也满足-,|,in,&运算;
6.字典Dictionary:字典中的元素没有顺序;所有用for循环结果也不是按照顺序输出;
    (1)格式:d={key1:val1,key2:val2};{}表示空字典,键key是必须是唯一,如果重复就会被覆盖,但是值不必唯一,可以是任何类型
          (字符串,数字或元祖);键可以是数字,字符串或元祖但是不能是列表;
    (2)dict()函数可以将序列转换为字典,如dict([('name','小萌'),('number','1001')]),dict(name='小智',number='1002');分别表示
          {'name':'小萌','number':'1001'},{'name':'小智','number':'1002'};
    (3)修改字典:字典a['key']=值;表示向字典a中新增键/值,或修改字典的已有的值/键;
    (4)删除字典:del a表示删除整个字典a,删除后就不存在了;
    (5)len(a):表示计算字典a的个数;
    (6)type(a):表示计算a的类型;返回<class '类型'>;
    (7)字典的格式化字符串:如'%(小强)s'%a;表示格式化获取字典a中的的小强这个键的值;
    (8)字典方法:
        1)a.clear()无参数;表示删除字典a所有项;
        2)a.copy()无参数;表示浅复制一份字典a;即复制的字典改变后原字典a不会改变;deep.copy()则不一样;
        3)list.fromkeys(seq[,val]),表示将列表seq为字典的键创建新字典;如果没有val就默认none;
        4)a.get(key,default=None),表示查找字典a中key键的值,如果没找到就返回default指定的值;
        5)key in dict,表示判断查找的键key是否在字典中结果返回true/false;
        6)dict.items()无参数,表示遍历字典,返回的结果是所有字典元素值组成的列表,如{'小萌':'1001','小智':'1002'}.items()返回
           的结果是{['小萌','1001'],['小智','1002']};
        7)dict.setdefault(key,default=None),表示获得与给定键相关的值如果存在就修改原值为指定的default的值,
           如果不存在就会添加为新键并赋值为default的值;
        8)dict1.update(dict2);表示把字典dict2的元素全部添加到字典dict1的首部,如果dict1中存在相同的键就覆盖;
        9)dict.values()无参数;表示以列表的形式返回字典中的所有值(包括重复值),不包括键;
        10)a.keys()无参数;表示获取字典中所有的键组成新的字典;
        11)a[key].append(e1);表示向字典某个键尾部添加某个值组成新的字典的值;
        12)解析表达式:效率高;如s=[x**2 for x in [1,2,3,4]]    => s=[1,4,9,16] 迭代+for循环+运算形成新的列表;
        13)a.has_key('key');表示判断字典a中是否存在键'key',返回结果为true/false;
7.文件:核心类型,只需要调用内置函数open创建一个文件对象;以字符串的形式传递一个文件名称及一个处理模式的字符串;
    (1)创建文件并写入内容: f=open("data.txt"[,"w"])    //创建一个文件名为'data.txt',写入'w'内容;保存在默认目录下python里;
                                                          只写文件名参数时表示读取;
                            f.write('hello\n')      //向文件写入具体内容,\n为换行;
                            f.write('world\n')
                            f.close()     //关闭文件;
                            b=f.read()    //也表示读取文件并赋值给b;
                            b.split()     //按空格拆分,可以将b才分成列表,['hello','world'];
8.布尔类型:1/0或true/false;
9.none:空值;
10.类:定义类    class 类名:                //定义一个类型;
                    def __init__(self,name,pay):      //定义方法,传进来2个参数name,pay;
                        self.name=name
                        self.pay=pay
                    def lastName(self):         //定义函数,self相当于js中的this;
                        return self.name.split()[-1]         //表示返回self的name字符串按空格切割后的返回数组的最后一个字符;
                    def salary(self,n):        //定义一个函数加薪,n表示加薪的百分比;
                        self.pay*=(1.0+n)
      调用类     bob=类名('bob jk',5000)             //传入姓名和工资参数;
                bob.lastName()      //结果为jk
                bob.salary(0.1)     //结果为bob加薪后的工资;
(五)运算符
    (1)算术运算符:+,-,*,/,//,%,**(冥);其中/除结果是即使整除也都是浮点数即保留小数位,//除结果是取下整数。a**b表示a的b次方;
            其中除数不能为0;如果浮点数//,那么结果保留小数点后1位0的浮点数;
    (2)比较运算符:> , < , >= , <=, == , != ;返回的结果是true/false;某些地方用true表示1,false表示0;
    (3)赋值运算符:=,+=,-=,*=,/=,%=,**=,//=;字符串也可以用+=赋值
    (4)位运算符:<<,>>,&,|,^,~(二进制取反);
    (5)逻辑运算符:and , or,not(非) ;优先级小于比较运算符。括号的优先级高,可指定优先性。a and b表示如果a为false,这个表达式
            就返回false,赋值返回y的计算值;a or b表示如果a为为非0就返回x否则返回y的值;not a表示返回true/fals0;
    (6)成员运算符:in,not in ;如a in list表示判断a是否存在list中,返回的结果是true/false;a not in list表示对a不是list的成
            员的判断。
    (7)身份运算符:is,is not;如a is(not) b 表示判断a,b是否引自一个对象即是否相等;返回的结果为true/false;
            print('a-b*c',e) =>表示e=a-b*c;
(六)逻辑结构
    (1)import math,表示从python标准库中引用math模块,math.pi表示调用math模块中的pi属性;可以同时引用多个模块,用逗号隔开即可。
            import math as a,表示为模块math取别名为a;
    (2)from math import pi,表示从python标准库中引用math模块的某个具体对象属性;可同时引用一个模块math中的多个属性方法,
           用逗号隔开。from math import *,表示引用math模块中的所有对象方法属性;from math import pi as p,表示为模块math中的
           pi方法函数取别名为p;
    (3)序列解包(可迭代解包):将多个值得序列解开,然后放在变量序列中,如x,y,z=1,2,3或num=(1,2,3) x,y,z=num;注意左右的变量和
           值必须一一对应;否则报错;
    (4)链式赋值:如x=y=z=10;
    (5)语句块:冒号(:)用来表示语句块的开始,里面的每个语句都要缩进,当退回到和起始语句块相同的缩进量时,表示当前语句块的结束;
    (6)条件语句:6个假值(False None 0 "" () {} []),即false值;bool(a)函数判断a返回true/false;
            1)if语句:  if 条件:
                            //执行语句块,注意缩进一致,切结尾不能有其他结束符号
            2)if  else语句:    if 条件:
                                    //if执行语句
                                 else:
                                    //else执行语句
            3)elif语句:         if 条件:
                                    //if执行语句,注意判断的条件可以是 0<m<5这样的写法;
                                  elif 条件:
                                    //elif执行语句
                                  else:
                                     //else执行语句
            4)条件语句的多级嵌套:
            5)==与is的判断:使用==运算符是判断两个对象值是否相等,使用is判断两个对象是否相同(是否是同一对象,是否具有相同内存地址);
            6)两个序列的比较:是按照字符串的大小顺序依次比较;
    (7)循环语句:
            1)while循环:while 条件:
                              //满足while条件下执行的语句,注意缩进,判断条件可以是任何表达式,跳出/终止循环break/continue
                          else:
                              //表示循环条件为false执行else语句;while循环也可不用else单独循环
            2)for循环:  for 变量 in 序列/字符串/字典:
                              //表示依次遍历任何序列的元素,并依次把其元素赋值给遍历;跳出循环/终止循环:break/continue
                          else:
                               //表示循环条件为false执行else语句;for循环也可不用else单独循环
               注意:字典t={'name':'小智','num':'102'}:  for p in t:
                                                            print('%s:%s'%(p,t(p))      //结果为num:102  name:小智
                                    或者用这样的for循环: for key,value in t.items():     //items函数将键-值作为元祖返回
                                                            print('%s:%s'%(key,value))
    (8)pass语句:即空语句,不做任何事,只是占位,保证程序结构的完整型
(七)通用小程序
(八)函数和对象
    (1)abs()带一个参数数值类型的参数,表示求绝对值; fun=abs; 将abs函数变量赋值给变量fun,变量fun也具有绝对值函数的功能;
    (2)type(a) 判断a的类型;
(九)第三方组件
(十)实用小程序

猜你喜欢

转载自blog.csdn.net/qq_42231156/article/details/81368211