Python学习-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
- 如果 digits 大于 0,则四舍五入到指定的小数位。
-
使用方法修改字符串的大小写
- 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()和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
- 1.以'.'为分隔符
-
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
- 如果有多个,返回第一个的位置
- count 计算字符串中包含的多少个指定的子字符串
-
格式化
- % 数字代表长度,正数是右对齐,负数是左对齐
>>>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
常用于开发环境中:
方便、快捷;
查看变量、表达式的值- 设置断点
- 执行:Debug 'xx'(执行到第一个断点前面的语句为止(断点处语句还未执行到))
- 继续执行
- 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 3>4 AssertionError
-
- 链接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')