字符串格式化(5):
1、+
2、print("",变量名)
3、print("%d,%d"%(变量名1,变量名))
4、print("{}+{}={}".format(变量1,……))
5、print(f"mcks{变量名}")
运算符:
1、算术运算符: + - * / // %
2、关系运算符(比较) ==
3、逻辑运算符 and or not
4、所属 :in not in
5、is 内存地址是否相同
6、赋值运算符 =
a = 1
a += 4 a = a + 4
python中没有自增自减
()提高优先级
字符串对象: dir()
位运算:基于二进制的运算 ---计算机最小单位:位bit
计算机的底层基于位运算的
&
|
^ 异或
~ 按位取反
>>
<<
字节1byte = 8bit
10+11
0000 1010
0000 1011
---------------
0001 0101
正数相加的问题,负数?
8位的首位作为符号位 1代表负数 0代表正数
-3+2
1000 0011
0000 0010
-------------
1000 0101 -5(出大事了)
为了解决负数运算问题------原码、反码、补码三个概念
原码 数值的标准的二进制位
反码 符号位不变,其余位取反
补码 反码+1
原码 反码 补码
-3 1000 0011 1111 1100 1111 1101
2 0000 0010
------------------------------------------
1000 0001 1111 1110 1111 1111---
正数不存在反码、补码,计算机底层的运算是基于补码
-3+4
-3 1000 0011 1111 1100 1111 1101
4 0000 0100
------------------------------------------
0000 0001
位运算:
&:两真则真,一假则假
8&9: 0000 1000
& 0000 1001
---------------
0000 1000
|:两假为假,一真则真
8|9:
0000 1000
0000 1001 |
---------------
0000 1001
^:相反为真,相同为假
8^9:
0000 1000
0000 1001 ^
---------------
0000 0001
~:按位取反 包含符号位
~2:0000 0010 ---->1111 1101(补码-1)---->1111 1100(反码符号位不变,其余为按位取反)--->1000 0011(原码)
>>
8>>2: 0000 1000
0000 0010 2 右移:除以2的n次方(右移的位)
<<
8<<2: 0000 1000 左移:乘以2的n次方
0010 0000
三元运算符: 条件成立时的代码 if 判断 else 条件不成立时的代码
程序结构:
顺序结构
选择结构
循环结构
选择结构:
if关键字
最简单的if语句:
if 表达式:
代码1
索引:正向索引:下标从0开始
负数索引,下标从-1开始
字符串的切片:sname[start:end:step] [ )
sname:要操作的序列名称
start:表示切片的开始位置(包含自身),如果不去指定的话,默认从0开始。
end:表示切片的结束位置(不包含自身),如果不指定的话,默认是序列的长度
step:表示切片的步长,如果省略,默认为1
s[:] 切片切的是整个字符串
nanhang:步长为2,nnag 0 1 2 3 4 5 6
s[::-1]:字符串反转