链式赋值
同一个对象赋值给多个变量。 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)
>2 1
常量
Python 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。
>>> MAX_SPEED = 120
>>> print(MAX_SPEED) 120
>>> MAX_SPEED = 140 #实际是可以改的。只能逻辑上不做修改。
>>> print(MAX_SPEED)
140
内置数据类型和基本算术运算符
1. 整数
2. 浮点型
小数,3.14 或者科学计数法 314e-2
4. 布尔型
5. 字符串型
/ 浮点数除法 8/2 结果为4.0
// 整数除法 7//2 结果为3
% 模(取余) 7%4 结果为3
** 幂 2**3 结果为8
使用 divmod()函数同时得到商和余数:
divmod(13,3) 结果为 (4, 1)
divmod返回的是元组
整数
0b 或 0B,二进制 0 1
0o 或 0O,八进制 0 1 2 3 4 5 6 7
0x 或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
其他类型转换成整数——int()
浮点数
按照科学计数法存储
round(value)可以返回四舍五入的值
注:但不会改变原有值,而是产生新的值
时间表示、unix时间点、微秒和毫秒、time模块
time.time()获得当前时刻,返回的值是以秒为单位,带微秒 (1/1000 毫秒)精度的浮点值。例如:1530167364.8566。
>>> import time
>>> b = int(time.time())
>>> b1530168754
>>> totalMinutes = b/60
>>> totalMinutes 25502812.566666666
>>> totalMinutes = b//60
>>> totalMinutes 25502812
>>> totalHours = totalMinutes//60
>>> totalHours 425046
>>> totalDays = totalHours//24
>>> totalDays 17710
>>> totalYears = totalDays//365
>>> totalYears 48
多点坐标、绘制折线图、计算两点距离
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((x1-x4)**2 + (y1-y4)**2)
turtle.write(distance)
布尔值
>>> a = True
>>> b = 3
>>> a+b
4
逻辑运算符
or 或
x or y x 为 true,则不计算 y,直接返回 true
x 为 false,则返回 y
and 与
x and y x 为 true,则返回 y 的值
x 为 false,则不计算 y,直接返回 false
is 与 == 区别
is 同一运算符 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
== 比较运算符 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法。
is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。
整数缓存问题
小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用
字符串拼接
字符串拼接 “3”+“2”==> “32”
列表、元组等合并 [10,20,30]+[5,10,100] ==>[10,20,30,5,10,100]
字符串复制
“sxt”*3 ==> ”sxtsxtsxt”
列表、元组等复制 [10,20,30]*3 ==> [10,20,30,10,20,30,10,20,30]
字符串
使用内置函数 ord()可以把字符转换成对应的 Unicode 码;
使用内置函数 chr()可以把十进制数字转换成对应的字符。
>>> ord('A') 65
>>> ord('高') 39640
>>> chr(66) 'B'
>>> ord('淇')
28103
不换行打印
调用 print 时,会自动打印一个换行符。
不想自动添加换行符可以自己通过参数 end = “任意字符串”。
实现末尾添加任何内容
源文件
print("sxt",end=' ')
print("sxt",end='##')
print("sxt")
运行结果:
sxt sxt##sxt
从控制台读取字符串
使用 input()从控制台读取键盘输入的内容
>>> myname = input("请输入名字:")
请输入名字:果子
>>> myname
'果子'
[]提取字符
正向搜索:
最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。
直到 len(str)-1 为止。
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,
直到-len(str) 为止。
replace()替换
字符串是“不可改变”的,但是可以创建新的字符串对象,并指向变量 a。
字符串切片slice操作
[起始偏移量 start:终止偏移量 end:步长 step]
split()分割、jion()合并
>>> a = "to be or not to be"
>>> a.split() ['to', 'be', 'or', 'not', 'to', 'be']
>>> a.split('be') ['to ', ' or not to ', '']
>>> a = ['sxt','sxt100','sxt200']
>>> '*'.join(a)
'sxt*sxt100*sxt200