Python学习00-Tips

查看所有Python相关学习笔记

此篇文章用于记录学习过程中接触到的零散知识点(包含已归纳到各个模块的知识点)。
用于自我查询--->>备忘录

  • 开方

    x**2 
    > 等于x的平方
    x**3
    > 等于x的三次方
    
  • 取整

    >>>int(3.44)
    3
    >>> int(3.9)
    3
    
  • 四舍五入

    round(number,digits)
    

    number,要四舍五入的数,digits是要小数点后保留的位数

    • 如果 digits 大于 0,则四舍五入到指定的小数位。
      round(13.2222,1) > 13.2
    • 如果 digits 等于 0,则四舍五入到最接近的整数。
      round(13.2222,0) > 13.0
    • 如果 digits 小于 0,则在小数点左侧进行四舍五入。
      round(13.2222,-1) > 10.0
      round(15.2222,-1) > 20.0
      round(15.2222,-2) > 0.0
    • 如果round函数只有参数number,等同于digits 等于 0。
      round(13.2222) > 13
  • 使用方法修改字符串的大小写

    • upper()将所有字母变为大写输出
    • lower()将所有字母变为小写输出
    • capitalize() 首字母大写,其余小写
    • title() 所有单词首字母大写,其余小写
      >>>s = 'hEllo pYthon'
      >>>print(s.upper())
      >>>print(s.lower())
      >>>print(s.capitalize())
      >>>print(s.title())
      HELLO PYTHON
      hello python
      Hello python
      Hello Python
      
    • Python提供了isupper(),islower(),istitle()方法用来判断字符串的大小写
      >>>print('A'.isupper())
      >>>print('A'.islower())
      >>>print('Python Is So Good'.istitle())
      >>># print('Dont do that!'.iscapitalize())#错误,不存在iscapitalize()方法
      True
      False
      True
      
  • 删除空白【strip-删除,清除】

    • rstrip()删除末尾的空白(包括\t和\n)
    • lstrip()删除头部的空白(包括\t和\n)
    • strip()删除字符串两端的空白(包括\t和\n)
      >>>msg='   python   '
      >>>print('-'+msg+'-')#初始状态
      >>>print('-'+msg.rstrip()+'-')#删除右侧空格
      >>>print('-'+msg.lstrip()+'-')#删除左侧空格
      >>>print('-'+msg.strip()+'-')#删除两侧空格
      -   python   -
      -   python-
      -python   -
      -python-
      
  • 使用方法sort()对列表进行永久排序-按字母排序

    #正序
    >>>nicks = ['zhangsan','lisi','wangwu','zhaoliu']
    >>>print(nicks)#原始状态
    >>>nicks.sort()
    >>>print(nicks)#排序后的状态
    ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    ['lisi', 'wangwu', 'zhangsan', 'zhaoliu']
    
    #倒序
    >>>nicks = ['zhangsan','lisi','wangwu','zhaoliu']
    >>>print(nicks)#原始状态
    >>>nicks.sort(reverse = True)
    >>>print(nicks)#排序后的状态
    ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    ['zhaoliu', 'zhangsan', 'wangwu', 'lisi']
    
  • 使用方法sorted()对列表进行临时排序-按字母排序

    >>>nicks = ['zhangsan','lisi','wangwu','zhaoliu']
    >>>print(nicks)#原始状态
    >>>print(sorted(nicks))#临时排序的状态(正序)
    >>>print(sorted(nicks,reverse = True))#临时排序的状态(倒序)
    >>>print(nicks)#使用临时排序后,nicks的状态
    ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    ['lisi', 'wangwu', 'zhangsan', 'zhaoliu']
    ['zhaoliu', 'zhangsan', 'wangwu', 'lisi']
    ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    
  • 倒着打印列表,按元素反转列表排序

    >>>nicks = ['zhangsan','lisi','wangwu','zhaoliu']
    >>>print(nicks)#原始状态
    >>>nicks.reverse()#倒转
    >>>print(nicks)#倒转后的状态
    ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    ['zhaoliu', 'wangwu', 'lisi', 'zhangsan']
    
  • 方法zfill()在数值字符串前填充0

    >>>'12'.zfill(5)
    '00012'
    >>>'-3.14'.zfill(7)
    '-003.14'
    >>>'3.14159265359'.zfill(5)
    '3.14159265359'
    
  • math模块为浮点运算提供了对底层C函数库的访问

    >>> import math
    >>> math.cos(math.pi / 4.0)
    0.70710678118654757
    >>> math.log(1024, 2)
    10.0
    
  • random提供了生成随机数的工具

    >>> import random
    >>> random.choice(['apple', 'pear', 'banana'])
    'apple'
    >>> random.sample(range(100), 10)   # sampling without replacement
    [30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
    >>> random.random()    # random float
    0.17970987693706186
    >>> random.randrange(6)    # random integer chosen from range(6)
    4
    >>>random.randint(1,11) #随机生成一个数(包含开始和结束的数字)
    
  • range

    语法:range([start,]stop[,step=1])
    - 这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的
    - step=1表示第三个参数的默认值是1
    - range这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列(包括start参数哦的值,不包括stop参数的值)

    >>> for i in range(4):
    ...     print(i,end=' ')
    ... 
    0 1 2 3 
    >>> for i in range(0,4,2):
    ...     print(i,end=' ')
    ... 
    0 2 
    
  • datetime 模块为日期和时间处理同时提供了简单和复杂的方法。支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。该模块还支持时区处理。

    >>> # dates are easily constructed and formatted
    >>> from datetime import date
    >>> now = date.today()
    >>> now
    datetime.date(2003, 12, 2)
    >>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
    '12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'
    
    >>> # dates support calendar arithmetic
    >>> birthday = date(1964, 7, 31)
    >>> age = now - birthday
    >>> age.days
    14368
    
  • Python中的split()函数的用法

    • Python中有split()和os.path.split()两个函数,具体作用如下:

      • split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
      • os.path.split():按照路径将文件名和路径分割开
    • 1、split()函数

      语法:str.split(str="",num=string.count(str))[n]

    • 参数说明:

      • str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
      • num:表示分割次数。如果存在参数num,则仅分隔成num+1 个子字符串,并且每一个子字符串可以赋给新的变量
      • n:表示选取第n个分片

      注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略

    • splitlines() 以换行符分割字符串

      >>>fh = open('abc.txt')
      >>>flines = fh.read().splitlines()
      >>>lines
      
    • 2、os.path.split()函数

      语法:os.path.split('PATH')

    • 参数说明:

      • PATH指一个文件的全路径作为参数:
      • 如果给出的是一个目录和文件名,则输出路径和文件名
      • 如果给出的是一个目录名,则输出路径和为空文件名
    • 3、分离字符串

      string = "www.gziscas.com.cn"

      • 1.以'.'为分隔符
        >>>print(string.split('.'))
        ['www', 'gziscas', 'com', 'cn']
        
      • 2.分割两次
        >>>print(string.split('.',2))
        ['www', 'gziscas', 'com.cn']
        
      • 3.分割两次,并取序列为1的项
        >>>print(string.split('.',2)[1])
        gziscas
        
      • 4.分割两次,并把分割后的三个部分保存到三个文件
        >>>u1, u2, u3 =string.split('.',2)
        >>>print(u1)
        >>>print(u2)
        >>>print(u3)
        www
        gziscas
        com.cn
        
    • 4、分离文件名和路径

       ```
       >>>import os
       >>>print(os.path.split('/dodo/soft/python/'))
       ('/dodo/soft/python', '')
       >>>print(os.path.split('/dodo/soft/python'))
       ('/dodo/soft', 'python') 
       ```
      
  • 切片赋值

    >>>a = [123,'abc',4.56,['test1','test2']]
    >>>print(a)
    >>>a[1:3] =[1,2]
    >>>print(a)
    [123, 'abc', 4.56, ['test1', 'test2']]
    [123, 1, 2, ['test1', 'test2']]
    
    
  • 字符串对象的常用方法

    • count 计算字符串中包含的多少个指定的子字符串
      >>> '123 123 789'.count('123')
      2
      
    • endswith 检查字符串是否以指定的字符串结尾
      >>>'139 123 789'.endswith('89')
      True
      
    • startswith 检查字符串是否以指定的字符串开头
      >>>'185 123 789'.startswith('123')
      False
      
    • find 返回指定的子字符串在字符串中出现的位置
      >>> '12345678'.find('4566')
      3
      
      • 如果有多个,返回第一个的位置
        >>>'ok,good,name'.find(',')
        2
        
      • 还可以指定从什么位置开始查找
        >>>'ok,good,name'.find(',',3)
        7
        
      • isalpha 检查字符串中都是字母
        >>>'abc1'.isalpha()
        False
        
      • isdigit 检查字符串中是否都是数字
        >>>'abc1'.isdigit()
        False
        
      • str.join 将sequence类型的参数的元素字符串合并(连接)到一个字符串,string作为分隔符
        >>>';'.join(['i','love','you'])
        i;love;you
        >>>''.join(['i','love','you'])
        iloveyou
        >>>b= ','
        >>>a=b.join(['i','love','you'])
        >>>print(a)
        i,love,you
        
      • split讲字符串分割为几个子字符串,参数为分隔符,返回结果存在一个list里
        >>>'i like play football'.split(' ') # 以空格作为分隔符
        ['i', 'like', 'play', 'football']
        
      • replace 替换字符串里面指定的子字符串
        >>>a = 'Tom is a dog. Snoopy is a dog'
        >>>b = a.replace('dog','pig')
        >>>print(a)
        >>>print(b)
        Tom is a dog. Snoopy is a dog
        Tom is a pig. Snoopy is a pig
        
  • 格式化

    • % 数字代表长度,正数是右对齐,负数是左对齐
      >>>vs = [('hasen1',89898),('hasen1112',4444)]
      >>>fs = '''
      >>>%-10s salary: %10d $
      >>>%-10s salary: %10d $
      >>>'''
      >>>print(fs % (vs[0][0],vs[0][1],vs[1][0],vs[1][1]))
      hasen1     salary:      89898 $
      hasen1112  salary:       4444 $  
      
    • format
      • 基本格式
      >>>print('{}'.format(56))
      >>>print('{:10}'.format(56)) # 右对齐
      >>>print('{:<10}'.format(56)) # 左对齐
      >>>print('{:010}'.format(56)) #补0
      56
              56
      56        
      0000000056
      
      • 如果字符串内本身含有{},则需要用两个
      >>>print('{} 他说{{你好}}'.format(123.222))
      123.222 他说{你好}
      
      • 简易格式(python 3.6以后)
      >>>name = 'hasen'
      >>>print(f'he said his name is {name}')
      he said his name is hasen
      
      >>>print(f'{123.444:.2f}')
      123.44
      
  • which python(which python3) 查询python的path

  • tell 当前指针位置
    >>>fh = open('abc.txt')
    >>>fh.tell()
    0
    
  • seek 移动指针
    >>>fh = open('abc.txt')
    >>>fh.tell()
    0
    >>>fh.seek(2) #向后移动两个位置
    >>>fh.tell()
    2
    >>>fh.seek(2,0) #0-从开始位置向后移动两个位置
    >>>fh.tell()
    2
    >>>fh.seek(2,1) #1-从当前位置向后移动两个位置
    >>>fh.tell()
    4
    >>>fh.seek(-2,2) #2-从结束位置向前移动两位
    >>>fh.tell()
    
  • 字典(dict)

    • get方法:如果查不到则返归指定的值
    >>>dict2 =  {'name':'jack','age':40}
    >>>dict2['age']
    40
    >>>dict2.get('age1',10)
    10
    
    • 取字典里的值
    for name in dict #取出key
    for name,info in dict.items() #取出key和value
    for keys in dict.keys() #取出key
    for values in dict.values()#取出value
    
    • 清空字典
    dict.clear()# 清除内容
    dict = {} # 定义为一个新的字典,如果是在其他处调用,则原dict不变
    
    • 增加另一个dict的内容
    >>>d = {1:1,2:2,3:3}
    >>>d
    {1: 1, 2: 2, 3: 3}
    >>>d.update({4:4,5:5})
    >>>d
    {1: 1, 2: 2, 3: 3, 4: 4, 5: 5}
    
  • pip使用

    • 安装 pip install xxx
    • 卸载 pip uninstall xxx
    • 更新 pip install xxx -u
  • 函数注释

    def count(info):
        '''
        :param info: 格式:'姓名1,:age1,姓名2:age2,...'
        :type info:str
        :return: (maxNumAge, maxNum)
        :rtype:list
        计算字符串内哪个年龄的人数最多,并返回人数最多的年龄和该年龄的人数
        '''
        pass
    a = 'hasen1 :13,tom mark : 33,hasen3:13,hasen4:13,hasen5:33,   hasen5:40'
    count(a)
    
    
    • :param a -->指明参数为a
    • :type a:int -->指明参数a的类型为int
    • :return:a*2 -->指明返回的内容
    • :rtype:int -->指明返回的类型
    • 调用函数时,按住ctrl,鼠标指向调用参数的位置可以查看该函数的参数个数、类型,以及返回类型
    显示内容如下:
    ---def count(info)
    ---inferred type:(info:str) -> list
    
  • 调试
    • 方法一:IDE debug

      常用于开发环境中:
      方便、快捷;
      查看变量、表达式的值

      1. 设置断点
      2. 执行:Debug 'xx'(执行到第一个断点前面的语句为止(断点处语句还未执行到))
      3. 继续执行
        • Resume Program(F9)继续执行(执行到下一个断点前)
        • Step Over(F8)单步执行(不进入循环体,每次执行完本行)
        • Step Into(F7)单步执行(进入循环体)
        • Step Into My Code(Alt+Shift+F7)单步执行(进入循环体,仅进入我的代码)
        • Step Over(Shift+F8)单步执行(如果已进入循环体内,按此按钮可提前执行完循环并跳出循环体)
        • Stop 'xxx'(Ctrl+F2)结束debug
    • 方法二:打印信息(pprint)(日志信息)

      常用在没有IDE的时候:临时任务;生产环境(bug不方便重现;用log方法,tail/tailf查看日志文件)

      # pprint 支持打印列表和字典
      >>>from pprint import pprint
      >>>a = [1,2,3,4,6]
      >>>pprint(a)
      
      
  • 判断数据类型
    • type 查询类型
    • isinstance(a,b) 判断类型(推荐使用)a是否为b类型,返回bool型(True or False)
    >>>type(3)
    
    >>>isintance(3,int)
    True
    >>>isintance(3,str)
    False
    
  • 条件判断
    • 三元操作符

      语法:x if 条件 else y -->如果条件为真则结果为x 否则为y

      >>>a,b = 3,4
      >>>small = a if a>>print(small)
      3
      
    • 断言(assert)

      当此关键字后面的条件为假时,程序自动崩溃并抛出AssertionError的异常

      一般来说我们可以用Ta在程序中植入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

      语法格式:assert 表达式 [, 参数]

      >>>assert 3>4
      AssertionError
      
      >>>assert 5<4,'XX'
      Traceback (most recent call last):
      File "lhytest.py", line 2, in 
          assert 5<4,'XX'
      AssertionError: XX
      
      
  • 连接mysql数据库
    import pymysql.cursors
    
    connect = pymysql.Connect(
        host='199.09.09.99',
        port =3306,
        user='root',
        password='root',
        database='healthywalk'
    )
    cursor = connect.cursor()
    cursor.execute('select answers from questionnaire ')
    value= cursor.fetchall()
    print(value)
    
  • 调用默认浏览器打开某个网址
    import webbrowser
    webbrowser.open('http://www.baidu.com')
    

你可能感兴趣的:(Python学习00-Tips)