链式赋值
链式赋值用于同一个对象被赋给多个变量 x=y=123 相当于x=123;y=123
系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致) a,b,c=4,5,6 相当于:a=4;b=5;c=6 使用系列解包赋值实现变量交换
a,b=1,2
a,b=b,a
print(a,b)
常量
python不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值做出修改
MAX_SPEED=120
PRINT(MAX_SPEED)
内置函数类型
每个对象都有类型,python中最基本的数据类型: 1.整型:整数,2345,10,50 2.浮点型:小数 3.布尔型:表示真假 4.字符串
数字
python支持整数和浮点数
运算符 | 说明 | 示例 | 结果 |
---|
+ | 加法 | 3+2 | 5 | ? | 减法 | 30-5 | 25 | * | 乘法 | 3*6 | 18 | / | 浮点数除法 | 8/2 | 4.0 | // | 整数除法 | 7//2 | 3 | % | 模(取余) | 7%4 | 3 | ** | 幂 | 2**3 | 8 |
除数为0,会产生异常 使用divmod()函数同时得到商和余数 divmod(13,3) (4,1) divmod是一个函数,以后会详细介绍,返回的是一个元组
整数
python中,除10进制,还有其他三种进制
- 0b或0B,二进制
- 0o或0O,八进制
- 0x或0X,十六进制
这三种进制可以非常方便的进行位运算操作
使用int()实现类型转换:
1.浮点数直接舍去小数部分。如:int(9.9)的结果是9 2.布尔值true转为1,false转为0 3.字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错 自动转型:整数和浮点数混合运算时,表达式结果自动转型成浮点数
浮点数float
浮点数用科学计数法表示,比如3.14表示成314e-2
类型转换和四舍五入
1.类似于int(),我们也可以使用float()将其他类型转化成浮点数 2.整数和浮点数混合运算时,表达式结果自动转型成浮点数 3.round(value)可以返回四舍五入的值 注:但不会改变原有值,而是产生新的值
增强型赋值运算符
运算符+、-、*、/、//、***和%和赋值符==结合可以构成“增强型赋值运算符 a=a+1 等价于: a+=1
运算符 | 例子 | 等价 |
---|
+= | a+=2 | a=a+2 | -= | a-=2 | a=a-2 | *= | a*=2 | a=a*2 | /= | a/=2 | a=a/2 | //= | a//=2 | a=a//2 | **= | a**=2 | a=a**2 | %= | a%=2 | a=a%2 |
注意:”+=“中间不能加空格!
时间的表示
计算机中的时间的表示是从”1970年1月1日00:00:00“开始,以毫秒进行计算,我们也把这个时刻称为unix时间点 这样,我们就把时间全部用数字来表示了 python中可以通过time.time()获得当前时刻,返回的值是以秒为单位,带微秒(1/1000毫秒)精度的浮点值 【操作】定义多点坐标-绘出折线-并计算起始点和终点距离
import turtle
import math
x1,y1=100,100
x2,y2=100,-100
x3,y3=-100,-100
x4,y4=-100,100
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)
distance=math.sqrt(((x4-x1)**2+(y4-y1)**2))
turtle.write(distance)
布尔值
True、False
比较运算符
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量true和false等价
逻辑运算符
运算符 | 格式 | 说明 |
---|
or | x or y | x为true,则不计算y,直接返回true;x为false,则返回y | and | x and y | x为true,则返回y | not | not x | x为true,返回false;x为false,返回true |
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址
运算符 | 描述 |
---|
is | is是判断两个标识符是不是引用同一个对象 | is not | is not是判断两个标识符是不是引用不同对象 |
is 与==区别:
is用于判断两个变量引用对象是否为同一个,即比较对象的地址
==用于判断引用变量引用对象的值是否相等
整数缓存问题 python仅仅对比较小的整数进行缓存,(范围为【-5,256】)缓存起来,而非所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在pycharm或者保存为文件执行,结果时不一样的,这是因为解释器做了一部分优化(范围是【-5,任意正整数】)
总结 1.is比较两个对象的id值是否相等,是否指向同一个内存地址 2.==比较的是两个对象的内容是否相等,值是否相等 3.小整数对象在全局解释器范围内被放入缓存供重复使用 4.is运算符比=效率高,在变量和none进行比较时,应该选择is
字符串
字符串基本特点 字符串的本质是:字符序列。python的字符串是不可变的,我们无法对原字符串做任何修改。但可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果
python不支持单字符类型,单字符也是作为一个字符串使用的
字符串的编码
python3支持unicode,可以表示世界上任何书面语言的字符。 使用内置函数ord()可以把字符转换成对应的unicode码 使用内置函数chr()可以把十进制数字转换成对应的字符
引号创建字符串
我们可以通过单引号或者双引号创建字符串 使用两种引号的好处是可以创建本身就包含引号的字符串,而不是使用转义字符 连续三个单引号或者三个双引号,可以帮助我们创建多行字符串
空字符串和len()函数
python允许空字符串的存在,不包含任何字符 len()用于计算字符串含多少字符
转义字符
我们可以使用“+特殊字符”,实现某些难以用字符表示的效果。比如换行等。常见的转义字符有这些:
字符串拼接
1.可以使用+将多个字符串拼接起来。例如‘aa’+‘bb’==‘aabb’ 2.可以将多个字符串直接放到一起实现拼接,中间有空格就可以
字符串复制
可以使用*实现字符串复制
不换行打印
我们前面调用print时,会自动打印一个换行符。有时我们不想换行,不想自动添加换行符。我们可以自己通过参数end=“任意字符串",实现末尾添加任何内容
从控制台读取字符串
我们可以使用input()从控制台读取键盘输入的内容 str()实现数字转型字符串 str()可以帮助我们将其他数据类型转换为字符串 当我们调用print()函数时,解释器自动调用了str()将非字符串的对象转化成了字符串 使用【】提取字符 字符串的本质就是字符序列。我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。 正向搜索:最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推,知道len(s)-1为止 反向搜索:最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,知道-len(s)为止
replace()实现字符串替换 a.replace(‘c’,‘b’) 字符串切片slice操作 切片slice操作可以让我们快速的提取字符串,标准格式为“ [起始偏移量start:终止偏移量end;步长step] 切片操作时,起始偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会当作0,终止偏移量大于长度-1会被当成-1.
split()分割和join()合并 split()可以基于分隔符将字符串分割成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。 join()的作用和split()作用刚好相反,用于将一些列子字符串连接起来 拼接字符串要点: 使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join函数,因为join函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
字符串驻留机制和字符串比较
字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。python支持字符串驻留机制。对于符合标识符规则的字符串(仅包含下划线、字母和数字)会启用字符串驻留机制。
>>> a='abc_33'
>>> b='abc_33'
>>> a is b
True
>>> id(a)
2309604940784
>>> id(b)
2309604940784
>>> c='dd#'
>>> d='dd#'
>>> c is d
False
>>> c ==d
True
字符串比较和同一性
可以直接用==对字符串进行比较
成员操作符
in/not in判断某个字符(字符串)是否存在于字符串中
字符串常用方法汇总
常用查找方法
a=’’’ 我是高淇,今年18岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他6岁了。我是一个编程教育的普及者,希望能影响6000万学习编程的中国人。我儿子现在也开始学习编程,希望他18岁的时候可以超过我’’’
方法和使用示例 | 说明 | 结果 |
---|
len(a) | 字符串长度 | 96 | a.startwith(“我是高淇) | 以指定字符串开头 | true | a.endwith”过我“ | 以指定字符串结尾 | true | a.find(”高“) | 第一次出现指定字符串的位置 | 2 | a.rfind(”高“) | 最后一次出现指定字符串的位置 | 29 | a.count(’编程‘) | 指定字符串出现了几次 | 3 | a.isalnum() | 所有字符全是字母或数字 | false |
去除首位信息
我们可以通过strip()去除字符串首尾指定信息。通过lstrip()去除字符串左边指定信息,通过rstrip()去除字符串右边指定信息
大小写转换
a=‘gaoqi love programming,love SXT’
格式排版
center()、ljust()、rjust()这三个函数对字符串实现排版
>>> a='SCT'
>>> a.center(10,"#")
'###SCT####'
>>> a.center(10)
' SCT '
`>>> a.ljust(10,"*")
'SCT*******'
其他方法
1.islnum() 是否为字母或数字 2.isalpha()检测字符串是否全是字母(包括汉字) 3.isdigit()检测字符串是否全是数字 4.isspace() 检测是否为空白 5.isupper()是否为大写字母 6.islower()是否为小写字母
字符串的格式化
format()基本用法
>>> a="名字是:{0},年龄是:{1}"
>>> a.format("高淇",18)
'名字是:高淇,年龄是:18'
>>>
我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便
填充与对齐
填充常与对齐一起使用 ^<>分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话就是空格填充
>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜欢数字{1:*^8}".format("高淇","666")
'我是高淇,我喜欢数字**666***'
>>>
数字格式化
浮点数通过f,整数通过d进行需要的格式化
|