1.1位运算符
按位与:a&b,a和b的对应二进制位数进行与操作
a = 0b1011 # 二进制表示的11
b = 0b1101 # 二进制表示的13
result_and = a & b # 计算两者之间的按位与
print(bin(result_and)) # 输出:0b1001 (十进制为9)
按位或:a|b,a和b的对应二进制位数进行或操作
a = 0b1011
b = 0b1101
result_or = a | b # 计算两者之间的按位或
print(bin(result_or)) # 输出:0b1111 (十进制为15)
按位异或:a^b,a和b的对应二进制位数进行或操作
a = 0b1011
b = 0b1101
result_xor = a ^ b # 计算两者之间的按位异或
print(bin(result_xor)) # 输出:0b110 (十进制为6)
若a^b=c,则必有c^b=a,c^a=b
x=100
y=200
要求交换x,y的值
方法一:
temp=x
x=y
y=temp
方法二:异或操作
x=x^y
y=x^y //实际上右侧x^y已得到原来x的值,因为要交换x,y的值,所以将原先x的值赋值给y
x=x^y //实际上右侧x^y已得到原来y的值,因为要交换x,y的值,所以将原先y的值赋值给x
方法三:
x,y=y,x
移位操作:1.首先,我们需要明白,数字在计算机中是以补码保存的。
- 正数的原码、反码、补码都是一样的,负数的反码是在保留二进制原码符号位后其余位数取反,负数的补码则是取其反码+1得到,且负数的补码保留二进制符号位后其余位取反再+1可得到其原码。
a=5
print(~a)
其结果为-6
5=0101 正数补码即原码,python取反操作后为1010,即取反数的补码,为负数,保留符号位取反+1得原码为1110,即-6
a=-8
print(~a)结果为7
-8=11000 补码为11000,Python取反操作为00111,为取反数的补码,正数,原、反、补码相同,即7
按位取反:a~b,a和b的对应二进制位数进行或操作
a = 0b1011
result_not = ~a # 计算a的按位取反
print(bin(result_not)) # 输出:-0b1100
左移位:a<<b,将a的二进制位向左移动b位,左边移出的部分会被丢弃,右边空出的位置补零。
右移位;a>>b,将a的二进制位向右移动b位,对于无符号整数,右边移出的部分会被丢弃,左边空出的位置补零(通常补0);对于有符号整数,右移时取决于具体实现,可能是算术右移(符号位扩展)或者逻辑右移(补0)。
1.2赋值运算符
=:赋值
+=:加赋值,加等于x+=a即x=x+a,以下都同理
-=:减法赋值
*=:乘法赋值
/=:除法赋值
%=:取模赋值
**=:幂运算赋值
//=:整除赋值
没有 a++、 a-- 这种自增自减运算符;
1.3数学函数
部分函数是python环境自带的 部分是math模块带的 部分是公共的
先引入math模块:
import math
函数:
abs(x):返回数字的绝对值,如abs(-10) 返回 10
math.ceil(x):返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x,y):如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。
math.exp(x):返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
math.fabs(x):以浮点数形式返回数字的绝对值,如math.fabs(-10) 返回10.0
math.floor(x):返回数字的下舍整数,如math.floor(4.9)返回 4
math.log(x):如math.log(math.e)返回1.0,math.log(100,10)返回2.0
math.log10(x):返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1,x2,....):返回给定参数的最大值,参数可以为序列。
min(x1,x2,.....):返回给定参数的最小值,参数可以为序列。
math.modf(x):返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
math.pow(x,y):x**y 运算后的值。
round(x,n):返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。 1.保留整数只有一个小数时:4舍6入5看齐,奇进偶不进 2.保留整数或小数超过一个小数时:看保留位的下下位是否存在
math.sqrt(x):返回数字x的平方根。
1.4随机数
先引入random库基础库:import random
random.choice(seq):从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
random.randrange (start, stop,step):从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random.random():随机生成下一个实数,它在[0,1)范围内。
random.shuffle(list):将序列的所有元素随机排序,修改原list
uniform(x, y):随机生成实数,它在[x,y]范围内.
1.5三角函数
import math
math.acos(x):返回x的反余弦弧度值。
math.asin(x):返回x的反正弦弧度值。
math.atan(x):返回x的反正切弧度值。
math.atan2(y, x):返回给定的 X 及 Y 坐标值的反正切值。
math.cos(x):返回x的弧度的余弦值。
math.sin(x):返回的x弧度的正弦值。
math.tan(x):返回x弧度的正切值。
math.degrees(x):将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
math.radians(x):将角度转换为弧度
1.6数学常量
import math
math.pi:数学常量pi,即圆周率
math.e:数学常量e,自然常数
1.7 Python 字符串(String)
1.字符串表达式
引号引起来的单引号、双引号、三引号(三个三引号或双引号);
2.type结果
字符串用type函数检测的结果为str
3.转义字符串
使用反斜杠\对字符进行转义,如\r 回车 \n 换行 \t 缩进 \\ 表示 \
x="hello\nhqyj"
print(x)
"""
打印结果为
hello
hqyj
"""
x="hello\thqyj"
print(x)
"""
打印结果为
hello hqyj
"""
x="hello\\hqyj"
print(x)
"""
打印结果为
hello\hqyj
"""
4.不转义
字符串前加r表示原始字符串:所见即所得,不转义;
x=r'c:\window\user\data'
print(x)
"""
打印结果为
c:\window\user\data
"""
5.字符串运算
字符串连接:+;
相邻的两个或多个 字符串字面值 (引号标注的字符)会自动合并
x='Py' 'thon'
print(x)#Python
字符串多次重复, 如 :
x=3*('a' + 'b')
print(x)#ababab
可以把字符串看成数组,通过下标访问字符,支持负数:
x='abc'[1]
print(x)#b
支持通过下标截取子字符串,第一个参数省略表示0,第二个参数省略表示到最后:
x='huaqyj'[0:2]
print(x)#hu
y='huaqingyunajian'[6:]
print(y)#gyunajian
6.f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法(旧的字符串格式化自行了解)。
之前我们习惯用百分号 (%):
实例
name = 'hqyj'
print('Hello %s' % name)#Hello hqyj
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去
用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
x = 1
print(f'{x+1}') #2
x = 1
print(f'{x+1=}') #x+1=2
1.8字符串的常用函数API
capitalize()将字符串的第一个字符转换为大写
count(str, beg= 0,end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
find(str, beg=0, end=len(string))检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
join(seq)以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
len(string)返回字符串长度
lower()转换字符串中所有大写字符为小写.
replace(old, new , max)把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
split(sep="", maxsplit=string.count(str))以 sep为分隔符截取字符串,如果 maxsplit有指定值,则仅截取 maxsplit+1 个子字符串
upper()转换字符串中的小写字母为大写