Day1:变量、运算符与数据类型
一、注释
1.整行注释:#
2.多行注释:’’’ ‘’’ 或 “”" “”"
二、运算符
1.算数运算符:
(1)加:+
(2)减:-
(3)乘:*
(4)除:/
(5)整除(地板除)://
(6)取余:%
(7)幂:**
2.比较运算符:
(1)大于:>
(2)大于等于:>=
(3)小于:<
(4)小于等于:<=
(5)等于:==
(6)不等于:!=
3.逻辑运算符:
(1)与:and
(2)或:or
(3)非:not
4.位运算符:
(1)按位取反:~
(2)按位与:&
(3)按位或:|
(4)按位异或:^
(5)左移:<<
(6)右移:>>
5.三元运算符
6.其他运算符:
(1)是:is
(2)不是:is not
(3)存在:in
(4)不存在:not in
三、变量和赋值
1.在使用变量之前,需要对其先赋值
2.变量名可以包括字母、数字、下划线,但变量名不能以数字开头
3.变量名大小写是敏感的,foo!=Foo
四、数据类型与转换
1.基本类型:
(1)整型:int
(2)浮点型:float
(3)布尔型:bool
2.容器类型:字符、元组、列表、字典和集合
3.获取类型信息:
(1)考虑继承关系:type()
(2)不考虑继承关系:isinstance()
判断两个类型是否相同推荐使用isinstance()
五、print()函数
1.将对象以字符串表示的方式格式化输出到文件对象file里,其中所有非关键字参数都按str()方式进行转换为字符串输出
2.关键字参数sed是实现分隔符,比如多个参数输出时想要输出中间的分隔字符
3.关键字参数end是输出结束时的字符,默认换行符是\n
4.关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件
5.关键字参数flush是立即把内容输出流文件,不作缓存
六、重点
1.注释:整行 #,多行 ‘’’ ‘’’ 、""" “”"
2.运算符优先级:
(1)一元运算符优于二元运算符,如正负号
(2)先算术运算,后移位运算,最后位运算
(3)逻辑运算最后结合
3. is,is not 对比的是两个变量的内存地址,==,!=对比的是两个变量的值
4. 数据类型转换:
(1)转换为整型:int(x,base=10)
(2)转换为字符串:str(object=’ ')
(3)转换为浮点型:float(x)
Day2:位运算
一、原码、反码和补码
1.二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示
2.原码:就是其二进制表示(有一位符号位)
3.反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)
4.补码:正数的补码就是原码,负数的补码是反码+1
5.符号位:最高位为符号位,0表示正数,1表示负数,在位运算中符号位也参与运算
二、按位非操作~
~把num的补码中的0和1全部取反(0变为1,1变为0)有符号整数的符号位在运算中同样会取反
三、按位与操作&
只有两个对应位都为1时才为1
四、按位或操作|
只要两个对应中有一个1时就为1
五、按位异或操作^
1.只有两个对应位不同时才为1
2.异或操作的性质:满足交换律和结合律
六、按位左/右移操作<<
num<<i:将num二进制表示向左移动i位所得的值
num>>i:将num二进制表示向右移动i位所得的值
七、利用位运算实现快速计算
1.<<,>>快速计算2的倍数问题
(1)n<<1:n2
(2)n>>1:n/2,负奇数的运算不可用
(3)n<<m:n(2^m)
(4)n>>m:n/(2^m)
(5)1<<n:2^n
2.^快速交换两个整数
3.a&(-a)快速获取a的最后为1位置的整数
八、利用位运算实现整数集合
1.元素与集合的操作
(1)a|(1<<i):把i插入到集合中
(2)a&~(1<<i):把i从集合中删除
(3)a&(1<<i):判断i是否属于该集合
2.集合之间的操作
(1)a补:~a
(2)a交b:a&b
(3)a并b:a|b
(4)a差b:a&(~b)
3.整数在内存中是以补码的形式存在的,输出自然也是按照补码输出
4.bin()输出
(1)bin一个负数(十进制表示),输出的是原码的二进制表示加上一个负号
(2)整型是补码形式存储的
(3)整型是不限长度的不会超范围溢出
所以为了获得负数(十进制表示)的补码,需要手动将其和十六进制数0xffffffff进行按位与操作,再交给bin()进行输出,得到的才是负数的补码表示
九、练习
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
python Task1 变量、运算符与数据类型&位运算
最新推荐文章于 2021-01-13 18:03:23 发布