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,则仅分隔成<font color=red>num+1</font> 个子字符串,并且每一个子字符串可以赋给新的变量
      • 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)
    <class 'int'>
    >>>isintance(3,int)
    True
    >>>isintance(3,str)
    False
    
  • 条件判断
    • 三元操作符

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

      >>>a,b = 3,4
      >>>small = a if a<b else b
      >>>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 <module>
          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')
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容

  • 初识python基本数据类型 数字 int(整型) long(长整型) -- python3 中已经将类型取消 f...
    _阿聪阅读 449评论 0 1
  • 基本数据类型: 1: info = 'abc' info[2] = 'd' 结果是什么,为什么会报错呢? 答:...
    玖月初识阅读 3,680评论 5 5
  • Python3笔记 | 第二课:循环、字符串、列表 程序三大执行流程 while循环 while 判断条件 :条件...
    DoubleProgram阅读 834评论 0 0
  • 今天是我们的表演,我期待了好久的表演,吃过早饭妈妈就带来到电视台,过了一会我找到了老师,开始集合了,老师带我们来到...
    李枝焰阅读 372评论 0 0
  • “如果你说的都是真的,那你跟我回去吧。”铁竹轩说着就去翻找他穿越来时手里拿着的那奇怪陨石。 可是那陨石早在我又一次...
    沐弘晨阅读 267评论 0 24