- 时间表示
- 计算机中的时间原点是1970年1月1日零点
- 最小单位是千分之一秒,即毫秒
- time()模块,使用前要
import time
- 表示现在的时间:time.time()
- 时间单位是秒,小数点后精度是微秒,表示的是1970年1月1号0点到现在过了多少秒
- 多点坐标
- 用到了系列解包赋值,来定义几个坐标点
- x1,y1 = 100, 0
- 求距离用了勾股定理,a=√(b^2+c^2)
- 需要用到
math()
模块中的sqrt
开方功能 - 开方:math.sqrt((x1-x4)**2)+(y1-y4)**2))
- 需要用到
- 用到了系列解包赋值,来定义几个坐标点
- 布尔值
- 逻辑运算:与and 或or 非not
- x and y, x true, y
- x and y, y false, false
- x or y, x true, true
- x or y, x false, y
- not x, x true, false
- not x, x false, true
- 比较运算:等于、不等于、大于小于、大于等于、小于等于
- 比较的是值,主要区别等于
==
和is - is比较的是对象的ip即内存地址
- 等于比较的是对象的值
- 比较的是值,主要区别等于
- 逻辑运算:与and 或or 非not
- 同一运算符 is
- 上面讲了
- is not 同理
- is 的运算效率比较高,因为
==
是通过调用方法实现比较,会笔记奥慢
- 整数缓存问题
- 使用pycharm或保存了的文件时,[-5,+∞]正整数都是会被缓存的,也就是如果值相同的两个变量,引用的其实是同一个对象
- 但在idle使用中,只能缓存到[-5,256]
- 字符串的三种创建方式
- 单引号
- 双引号
- 可以包含单引号
- 连续三个单引号或连续三个双引号
- 多行字符串
- 字符串的编码
- Python采用的是Unicode
- 16位编码一个字符,也就是2的16次方
- ASCII是Unicode的子集
- Python采用的是Unicode
- ord():将字符串转换成对应的Unicode编码
- chr():将十进制的数字编码转换成字符串
- Python中没有单字符这个类型,一个字符也是一个字符串
- 转义字符
- 换行
\n
- 回车
\r
- 续行符
\
- 制表符
\t
- 退格符
\b
- 单引号、双引号、反斜杠都是在前面加
\
- 换行
- 字符串拼接
- 加号
+
- 还可以用
join()
- 两边都是数字也可以相加,就是进行数学运算
- 两边都是字符串才可以拼接,形成一个新的字符串
- 两边数据类型不同,抛异常
- 加号
- 字符串复制
- 乘号
*
- 格式:
字符串 * 复制次数
- 乘号
- 不换行打印
- print()方法默认在最后打印一个换行符
\n
,如果不要这个换行符,print("aaa", end=''),end也可以等于任意其它字符
- print()方法默认在最后打印一个换行符
- input():从控制台读取字符串
- str():将其他类型的数据转换成字符串
- 数字型、布尔型都可以
- 布尔型不是转换成1或0,而是True或False
- 切片
[]
提取字符[起始位置:终止位置:步长]
- 包头不包尾
a = "abcde"
a[0:2:2]
a
- 反向搜索:用负数,最后一个字符是-1
- 将整个字符串倒序:
a[::-1]
- 提取整个字符串:
a[:]
- 步长可以没有,就会默认为1
- 起始没有,默认为从0开始
- 终止没有,默认到最后
- 注意第一个字符位置是0,而不是1
- replace():字符串替换
- a="abcde"
- b=a.replace('c','222')
- b # ab222de
- split():分割字符串
- a.split("to"),用“to”作为分割符号来分割字符串a
- 不指定分隔符并不会报错,而是默认使用空白字符(换行、空格、制表符)
- join():拼接字符串
- 连接符.join(待拼接的子字符串1,子字符串2...)
- 相比加号拼接,性能更好,因为加号每用一次,就会形成一个新的对象,而join是先计算所有字符串的长度,然后注意拷贝,仅仅建立一次新对象
- 必须要有连接符,否则会报错
- 驻留机制
- 我的理解是,有点类似于整数的缓存
- 对于符合标识符规则的字符串,都会存放在驻留池中,方便重复使用——不同变量都会引用同一个字符串
- 也就是仅有下划线、数字、字母三种字符组成的字符串
- 一旦包括了其它字符,包括汉字,都不会启用这个机制
- 成员操作符
- in
- not in
- 判断某个字符是否存在于一个字符串中
- 常用查找方法
- len(a):字符串长度
- a.startswith('xxx'):字符串a是否以指定字符xxx开头
- a.endswith('xxx'):字符串a是否以指定字符xxx结尾
- a.find('xxx'):字符串a中第一次出现123的位置(1的位置),若没有,返回-1
- a.rfind('xxx'):字符串a中最后一次出现123的位置(1的位置)
- 去除首尾信息,会产生新的字符串,且结果相同的字符串也不会启用驻留机制
- a.strip('xxx'):去除字符串a中首尾两端(不包括中间)的xxx
- a.lstrip('xxx'):去除字符串a中首端(不包括中间)的xxx
- a.rstrip('xxx'):去除字符串a中尾端(不包括中间)的xxx
- 大小写转换,全部都会产生新的字符串
- a.capitalize():字符串首字母大写
- a.title():字符串a中每个单词的首字母大写
- a.upper():字符串a中所有字母大写
- a.lower():字符串a中所有字母小写
- a.swapcase():字符串中大小写调换
- 格式排版
- a.center(19,"-"):字符串a在19个字符中居中,其它位置用“-”填充
- a.ljust(19,"-"):字符串a在19个字符中左对齐,右边用“-”填充
- a.rjust(19,"-"):字符串a在19个字符中右对齐,左边用“-”填充
- 其它的一些对字符串的判断
- a.isalnum():字符串a是否完全由字母或数字组成
- a.isdigit():字符串a是否完全由数字组成
- a.isalpha():字符串a是否完全由字母组成
- a.isupper():字符串a中的字母是否完全是大写字母(有字母就判断True or False,没有一律false)
- a.islower():字符串a中的字母是否完全是小写字母(有字母就判断True or False,没有一律false)
- format格式化
- a = '{name:★<8}是一只{age:-^8 .2f}岁的猫'
- a.format(name='kitty',age=2)
- 'kitty★★★是一只---2----岁的猫'
- 数字格式化
- 2位小数:.2f
- 2位百分数:.2%
- 必须是整数:d
- 以逗号分隔的数字:,
- 4位整数用0在左侧补位:0>4d
- 所有格式化的需求都直接跟在冒号后,以空格隔开,比如居中8个字符长度的2位小数以-号填充:{:-^8 .2f}