team-learning-python 第一课:变量、运算符、数据类型及位运算

team-learning-python 第一课:变量、运算符、数据类型及位运算

变量、运算符、数据类型

1.怎样对python中的代码进行注释?
①对于单行注释,用#
②对于多行注释,用 ’ ’ ’ ……’ ’ ’ 或 " " " ……" " " 表示区间注释

2.python有哪些运算符,这些运算符的优先级是怎样的?
解答:python中有算术运算符,比较运算符,逻辑运算符,位运算符,三元运算符,和其他运算符等
运算符的优先级:
一元运算符优于二元运算符。
先算术运算,后移位运算,最后位运算,逻辑运算最后结合
例如:5 ** - 7 等价于 5 ** (-7)
5 >> 4 + 5 & 6 等价于 (5 >> (4 + 5)) & 6
3 > 1 and 4 > 3 等价于 (3 > 1) and (4 > 3)

3.python中is,is not 与 = = ,!=的区别是什么?
解答:
① is, is not 对比的是两个变量的内存地址
② = =,!=对比的是两个变量的值
当比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和==,!=是完全等价的;当对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。

4.python中包含哪些数据类型?这些数据类型之间如何转换?
解答:包含int,float,bool等类型(即整型、浮点型、布尔型),可通过type()语句进行查看。
数据类型之间的转换:
①转换为整型:int(x)
②转换为字符串:str(x)
③转换为浮点型:float(x)

5.另外
isinstance(object, classinfo)判断一个对象是否是一个已知的类型。
例如:print(isinstance(1, int)) #true,表示1为int类型

位运算

练习题:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

class Solution(object):
	def singleNumber(self, nums): 
	"""       
  	:type nums: List[int]        
  	:rtype: int        
  	"""    
	inputs = [4,1,2,1,2]        
  	val = 0        
  	for i in range(len(inputs)):            
   	     val ^= inputs[i]        #利用异或特性,相同两个数字异或为0
  	return val

二进制有三种在那个不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
原码:就是其二进制表示(注意,最高位是符号位)
例如:00 00 00 11 表示3
10 00 00 11 表示-3

反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)
例如:00 00 00 11 表示3
11 11 11 00 表示-3
补码:正数的补码就是原码,负数的补码是反码+1
例如:00 00 00 11 表示3
11 11 11 01 表示-3
符号位:最高位为符号位,0表示正数,1表示负数,在位运算中符号位也参与运算。
2. 按位非操作:~
~1 = 0
~0 = 1
例如:~(00 00 01 01(表示5)) = 11 11 10 10 (表示-6)

  1. 按位与操作:&
    1 & 1 = 1
    1 & 0 = 0
    0 & 1 = 1
    0 & 0 = 0 (只有两个对应位都为1时才为1)

  2. 按位或操作:|
    1 | 1 = 1
    1 | 0 = 1
    0 | 1 = 1
    0 | 0 = 0 (只要两个对应位中有一个1时就为1)

  3. 按位异或操作:^
    1 ^ 1 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    0 ^ 0 = 0 (只有两个对应位不同时才为1)

  4. 按位左移操作:<<
    num << i : 表示将num的二进制表示向左移动 i 位所得的值。
    例如:00 00 10 11 表示11
    11 << 3
    结果:01 01 10 00 表示88

  5. 按位右移操作:>>
    num >> i 将num的二进制表示向右移动i位所得的值。
    00 00 10 11 表示11
    11 >> 2
    结果:00 00 00 10 (即2)

  6. 利用位运算实现快速计算
    通过<<, >>快速计算2的倍数问题。
    n << 1 表示计算 n* 2
    n >> 1 表示计算n/2,负奇数的运算不可用
    n << m 表示计算n*(2^m),即乘以2的m次方
    n >> m 表示计算n/(2^m),即乘以2的m次方
    1 << n 表示2^n

  7. 利用位运算实现整数集合
    一个数的二进制表示可以看作是一个集合(0表示不在集合中,1表示在集合中)。
    比如集合{1,3,4,8},可以表示成 01 00 01 10 10,而对应的位运算也就可以看作是对集合进行的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值