python学习

python学习,第1张

  1. 下载python,打开idle;
  2. 快捷键:(1)Alt+p重复上面输入函数;(2)Ctrl+c强制终止程序(比如进入死循环了可以用)
  3. 新手可能碰到的几点问题:1是用英文标点符号,修改编辑器字体使中英文差距变大,采用consolas字体;2是缩进是否正确;3是函数拼写是否正确;
  4. 字符串:(1)当你内部有单引号外部可以用双引号包括;若内部有双引号外部可以用单引号包括;(2)也可以用转义字符(即反斜杠\加就可以符号)就可以只表示这个符号,例如\"就输出";在字符串的第一个"前加r(就说明后面字符串为原始字符串即转义字符不再有效),就可以把字符串里面的\打印出来;(3)反斜杠\放在字符串末尾意味着你只是还没写完,不能按了enter就执行或者可以用括号()只要右半括号没括起来就表示没结束代码即可以转行按enter;(4)三引号就可以输入长字符串可以换行(5)字符串可以直接相加来拼接;字符串乘法就是重复几遍;
    x = "I love Fish"
    x.capitalize()#将首字母大写
    'I love fish'
    x
    'I love Fish'#字符串并不变,字符串不能修改
    x.casefold ()#都变成小写,不止英语
    'i love fish'
    x.title()
    'I Love Fish'#每个单词首字母大写
    x.swapcase()#大小写字母反转
    'i LOVE fISH'
    x.upper()#变成大写
    'I LOVE FISH'
    x.lower()#变成小写,只适用于英语
    'i love fish'
    ###
    x = "有内鬼,停止交易"
    x.center(5)
    '有内鬼,停止交易'
    x.center(15)
    '    有内鬼,停止交易   '
    x.ljust(15)
    '有内鬼,停止交易       '
    x.rjust(15)
    '       有内鬼,停止交易'
    x.center(15,"淦")
    '淦淦淦淦有内鬼,停止交易淦淦淦'
    x.ljust(15,"淦")
    '有内鬼,停止交易淦淦淦淦淦淦淦'
    x.rjust(15,"淦")
    '淦淦淦淦淦淦淦有内鬼,停止交易'
    x.zfill(15)
    '0000000有内鬼,停止交易'
    "123".zfill(5)
    '00123'
    "-123".zfill(5)
    '-0123'
    ###字符串查找
    x = "上海自来水来自海上"
    x.count("海")
    2
    x.count("海",0,5)
    1
    x.count("海",0,5)
    1
    x.find("海")
    1
    x.rfind("海")
    7
    x.rfind("鬼")
    -1
    ###字符串替换:replace(old,new,count=-1)
    "你好,在哪?".replace("你好","您好")
    '您好,在哪?'
    #translate(table)
    table = str.maketrans("ABCDEFG","1234567")##将ABCDEFG分别换成1234567
    "I love FishC".translate(table)
    'I love 6ish3'##F和C分别替换成了6和3
    ###
    x.startswith("我")
    True
    x.startswith("小甲鱼")
    False
    x.startswith("爱")
    False
    x.startswith("爱",1)##从下标为1开始第一个为“爱”
    True
    ###判断大小写
    x = "I love Python"
    x.upper()
    'I LOVE PYTHON'
    x = "I love Python"
    x.isupper()
    False
    x.isalpha()
    False
    "IlovepPython".isalpha()
    True
    r"I love Python\n".isprintable()
    True
    "I love Python".isprintable()
    True
    x = "1234"
    x.isdigit()
    True
    x.isnumeric()
    True
    x.isdecimal()
    True
    x = "一二三四"
    x.isdigit()
    False
    x.isnumeric()
    True
    x.isdecimal()
    False
    "I love Python".isidentifier()
    False
    "I_love_Python".isidentifier()
    True
    import keyword##导入判断是否为关键字函数
    keyword.iskeyword("if")
    True
    keyword.iskeyword("py")
    False
    ###
    "   左侧不要留白".lstrip()
    '左侧不要留白'
    "左侧不要留白".lstrip("左")
    '侧不要留白'
    

  5. 分支结构即条件语句:(1)缩进一样为同级(2)elif就是else if(3)一种特殊条件表达式:eg:如果a
  6. 嵌套结构即循环语句:while和for:(1)当while后面成立时一直运行其中缩进一样为同一级(2)break直接结束本层循环而continue是结束本次回到循环开始;(3)for 变量 in 可迭代对象:                                                                                                                  statement(s).eg:,,,在range里面设置步进值为-2时:,当计算从1加到10时range里要写11用地板除是为了结果不带.0,其中else和for成套for正常结束则执行else语句,同级的else会被break打断即不能print(n,“是一个素数”);
  7. ,import调用模块,eg:
  8. 数字类型:整数,浮点数,复数三种:(1)python整数长度不受限制;(2)3e-05=0.00003;浮点数不精确,eg:0.1+0.2==0.3会返回false;3+2可以返回5,而6/2返回3.0,而6//2返回3;(3)复数:x=1+2j,则x.real=1.0,x.imag=2.0(4)//这是地板除即除法结果向下取整(5)内置函数可以直接调用,不用import,eg:divmod,abs(取绝对值函数或取复数的模),int()取整函数,float()转换为浮点数,complex()转换为复数(注意括号内若为字符串不能有空格),pow(x,y)和x**y都是计算x的y次方且eg:pow(2,3,5)==2**3%5都是BIF即内置函数,eg:divmod(3,2)=(1,1),因为3//2=1,3%2=1;
  9. 布尔类型:False和True.结果为False:(1)定义为False的对象None和False;(2)值为0的数字类型:0,0.0,0j,Decimal(0),Fraction(0,1)(分子为0分母为1的有理数);(3)空的序列和集合:'',(),[],{},set(),range(0)
  10. 逻辑运算符:(1)and:左右两边若是判断表达式只有两边都是True结果为True;遇到假停(2)or:若两边为判断表达式则只要有一边True结果为True;遇到真停(3)not:eg:not True返回False;(4)优先级依次:not,and,or
  11. 流程图:
  12. 思维导图:
  13. 列表的增删插清:eg:(1)列表加.append(增加的一个元素)和.extend([增加的多个元素])(可以理解成一个元素不用[],多个元素要用[])(2)列表任意位置入.insert(位置,插入的元素)(3)列表除元素.remove(元素)如果要删除的元素存在好几个就会删除最前面那个(4)删除某个位置元素用.pop(位置)(5)清空列表.clear()
  14. 列表:(1)列表是可变的,字符串是不可变的(列表和字符串都可以用索引下标来改)(2)s.[3:]=["武松",“林冲”]意味着把第四个第五个元素替换为“武松”和“林冲”(3)s.sort()使s中元素从大到小排序,s.reverse()使s中元素从大到小排序或使元素顺序反过来
  15. 列表:(1)s.conut(3)查看3出现了几次(2)s.index("绿巨人")查看‘绿巨人’位置(3)s.index(3,1,7)查看从1到7中3的位置(3)s1=s.copy()等同于s1=s[:](切片法)都是是把s拷贝给s1,这两种为浅拷贝 
  16. 列表加法和乘法
    s = [1,2,3]
    t = [4,5,6]
    s + t返回[1,2,3,4,5,6]
    t * 3返回[4,5,6,4,5,6,4,5,6]
  17. 二维列表
    ###(1)嵌套列表
    matrix = [[1,2,3],
              [4,5,6],
              [7,8,9]]
    #访问嵌套列表(迭代一层列表用一层循环,迭代嵌套列表用嵌套循环):
    for i in matrix:
        for each in i:
            print(each)
    
            
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #一个下标代表第一行
    matrix[0]返回[1,2,3]
    #两个下标代表行和列
    matrix[0][0]返回1
    
    for i in matrix:
        for each in i:
            print(each,end='')                #end=' '是每个元素以空格结尾
        print()                               #print()默认每个循环后换行
    
    #返回下面:   
    123
    456
    789      #for i in matrix是锁定嵌套列表的每一个列表,for each in i是锁定嵌套列表中的每一个元素
    ###
    lists = [[]]*3
    lists
    [[],[],[]]                 #相当于是这种嵌套列表lists=[
                               #                         [],
                               #                         [],
                               #                         []]
    lists[0].append(3)
    lists
    [[3], [3], [3]] #只对第一行添加一个元素3,但因为*3复制来得三个还是引用用一个列表,所以都添加了3
    
    
    A = [None]*3                #A是一个列表类型,并且将里面的元素复制三次
    A
    [None, None, None]
    for i in range(3):
        A[i] = [None]*2        #A是一个一个列表,并且A的元素也是列表
    
        
    A
    [[None, None], [None, None], [None, None]]
    ####(2)下面三种:只有幅值是引用,后两种copy和切片是浅拷贝是对整个列表对象的复制
    ###第一种
    x = [1,2,3]
    y = x
    x[1] = 1
    x
    [1, 1, 3]
    y
    [1, 1, 3]##y是引用x
    ###第二种
    x = [1,2,3]
    y = x.copy()
    y
    [1, 2, 3]
    x
    [1, 2, 3]
    x[1] = 1
    y
    [1, 2, 3]#y就不是对x引用而是对整个列表对象的拷贝,改变x元素,不会i影响y元素
    ###第三种
    x = [1,2,3]
    y = x[:]    #切片
    x
    [1, 2, 3]
    y
    [1, 2, 3]
    x[1] = 1
    y            #切片同copy一样不仅仅是引用,改变x元素不会影响y
    [1, 2, 3]
    
    ###(3)对于嵌套列表上面三种理解有所不同
    ###对于浅拷贝反而改变x,y也变了,这是因为浅拷贝只是拷贝了外层对象内层还是引用:
    x = [[1,2,3],[4,5,6],[7,8,9]]
    y = x.copy()
    x[0][0] = 0
    x
    [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
    y
    [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
    ###深拷贝:(简单理解为浅拷贝是一个物体有两个名字,而深拷贝是两个完全一样的物体)
    import copy##导入copy模块,copy模块有两个函数,其中.copy()是浅拷贝,.deepcopy()是深拷贝
    x = [[1,2,3],[4,5,6],[7,8,9]]
    y = copy.copy(x)#利用copy模块的copy函数,其中x为参数,这是浅拷贝
    x[0][0] = 0
    y
    [[0, 2, 3], [4, 5, 6], [7, 8, 9]]##改变x也改变y,这是浅拷贝
    
    x = [[1,2,3],[4,5,6],[7,8,9]]
    y = copy.deepcopy(x)            ###这是深拷贝
    x[0][0] = 0
    y
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]###深拷贝,改变x不改变y
    
    
    
    
  18. is 运算符:
    x = "123"
    y = "123"
    x is y
    True        
    
    x = [1,2,3]
    y = [1,2,3]
    x is y
    False            #对于列表即便一样​​​​​​​,python也为他们存放了不同的列表中
  19.  列表推导式:[表达式    for    要 *** 作目标     in       可迭代对象]​​​​​​​
    ###(1)例如
    x = [1,2,3,4]
    x = [i+1 for i in x]
    x
    [2, 3, 4, 5]
    ###例如(2)
    x = [i*2 for i in "fish"]
    x
    ['ff', 'ii', 'ss', 'hh']
    ###
    code = [ord(i) for i in "FishC"]##调用ord内置函数,将单个字符串转换为对应编码
    code
    [70, 105, 115, 104, 67]
    ###例如(3)
    a = [[1,2,3],
         [4,5,6],]
    b = [x[1] for x in a]###获得每一行第二个元素
    b
    [2, 5]
    ###例如(4)
    s = [[0]*3 for i in range (3)]
    s
    [[0, 0, 0], [0, 0, 0], [0, 0, 0]]##i不管是多少都输出常量函数[0]*3,有意义地执行了几次i
    ###例如(4)
    even = [i for i in range(10) if i % 2 == 0]
    even
    [0, 2, 4, 6, 8]
    ###例如(5)
    word = ["Fantastic","Fish","Great"]
    fwords = [w for w in word if w[0] == 'F']##w是一个字符串
    fwords
    ['Fantastic', 'Fish']
    
    #循环是通过迭代逐个修改列表中元素,而列表推导式是重新创建一个列表再赋值给原先的变量名
    
    ###下面对于嵌套:例如(1)
    matrix = [[1,2,3],[4,5,6],[7,8,9]]
    flatten = [col for row in matrix for col in row]
    flatten
    [1, 2, 3, 4, 5, 6, 7, 8, 9]#降维,相当于前面for row in matrix为外层循环,for col in row内层
    
  20.  元组(序列包括字符串,列表,元组):元组既能像列表一样容纳多种类型对象,又拥有字符串的不可修改列表用[],元组用(),元组也可以不加(),但最好都加上()
    ###元组(1)
    s = 1,2,3        #逗号把元素分开
    t = 4,5,6
    w = s,t           #逗号是构成元组的基本元素
    w
    ((1, 2, 3), (4, 5, 6))
    ###(2)元组可生成列表
    s = (1,2,3)
    [each*2 for each in s ]    ###利用列表推导是可由元组生成列表
    [2, 4, 6]
    ###(3)加了逗号才是元组
    x = (123)
    type(x)
                    #不加逗号这是一个整数类型
    x = (123,)
    type(x)                    #关键字x看是什么类型
                #加了逗号才是元组类型
    ###打包和解包不仅适用于元组,也适用于列表和字符串
    t = (123,"fish",3.14)
    t
    (123, 'fish', 3.14)#元组打包
    (x,y,z) = t
    x
    123
    y
    'fish'
    z
    3.14        #元组解包
    #
    t = [123,"fish",3.14]
    t
    [123, 'fish', 3.14]#列表打包
    [x,y,z] = t
    x
    123
    y
    'fish'
    z
    3.14#列表解包
    ###元组虽然不可变,但是元组中的元素指向可变的列表依然是可以变的
    w = ([1,2,3],[4,5,6])
    w[0][0] = 0
    w
    ([0, 2, 3], [4, 5, 6])
    
    
  21. 异常捕获:try-except-else/finally
  22. 类和对象:需要先创建一个类(class)
    class Turtle:##定义一个类
        head = 1#属性
        eyes = 2#属性
        legs = 4#属性
        shell = True#属性
        def crawl(self):#方法
            print("人们总是抱怨我动作慢吞吞的,殊不知不积跬步无以至千里的道理")
        def run(self):#方法
            print("虽然我行动很慢,但如果遇到危险,还是会拼命狂奔")
        def bite(self):#方法
            print("人善被人欺,鬼善被鬼骑,我可是会咬人的")
        def eat(self):#方法
            print("谁知盘中餐粒粒皆辛苦,吃得好不如吃得饱")
        def sleep(self):#方法
            print("Zzzz...")
    #
    = RESTART: C:/Users/lenovo/AppData/Local/Programs/Python/Python310-32/TingKe.py
    t1 = Turtle()##调用函数,t1为Turtle类的对象(也叫实例对象)
    t1.head#属性
    1
    t1.legs
    4
    t1.run()##方法要加()
    虽然我行动很慢,但如果遇到危险,还是会拼命狂奔
    t2 = Turtle()##t2为另一个Turtle类对象
    t2.head = 3
    t2.head
    3
    t1.head
    1#修改t2对象属性不会改变t1
    t1.mouth = 1#动态地添加属性
    t1.mouth
    1
    dir(t1)#用dir函数查看t1里面比t2多了mouth属性
    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bite', 'crawl', 'eat', 'eyes', 'head', 'legs', 'mouth', 'run', 'shell', 'sleep']
  23. 面向对象编程三个属性之封装 :像原先定义的Turtle类把甲鱼的特征属性和行为能力封装到一起
  24. python处处是对象
    type(t1)
    #例如这是刚才定义的Turtle类的实例对象
    x = 123
    type(x)
    #例如这是整数类的实例对象,不是一般的BIF(内置函数)
    y = "fish"
    type(y)
    #例如这是字符串类的一个实例对象,不是一般的BIF(内置函数)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/799768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存