day4 循环关键字和位运算
循环关键字
1.continue
continue是关键字,只能用在循环体中
当执行循环体的时候,如果遇到continue,当次循环直接结束,马上进入下次循环的判断(遇到continue结束一次循环)
2.break
break是关键字;只能在循环体中使用
当执行循环体的时候,如果遇到break,整个循环直接结束。
3.while循环和break一起使用
"""
while True:
需要重复的操作
if 循环结束的条件:
break
"""
4.else
1)Python中完整的for
for 变量 in 序列:
循环体
else:
代码段
2)Python中完整分while
while 条件语句:
循环体
else:
代码段
在for循环或者while循环后面加else结构不会影响原循环的执行。
如果循环是正常结束的,循环结束后会执行else后面的代码段; 如果循环是因为遇到break而结束,那么else后面的代码就不会执行。
(可以根据else后面的代码是否执行来判断循环在执行过程中有没有遇到break)
进制
1.进制
1)十进制
基数:0,1,2,3,4,5,6,7,8,9
进位:逢10进1
位权:10的N次方(N从0开始)
程序中的表示方式:直接写
2)二进制
基数:0,1
进位:逢2进1
位权:2的N次方 (N从0开始)
程序中的表示方式:加前缀0b/0B
3)八进制
基数:0,1,2,3,4,5,6,7
进位:逢8进1
位权:8的N次方 (N从0开始)
程序中的表示方式:加前缀0o/0O
4)十六进制
基数:09,a/A(10)f/F(15)
进位:逢16进1
位权:16的N次方 (N从0开始)
程序中的表示方式:加前缀0x/0X
2.进制转换
1)其他进制转10进制:基数乘以位权的和
# 方法:print
# 0b1011 -> 2**0 + 2**1 + 2**3 = 11
# 0o56 -> 6*8**0 + 5*8**1 = 6 + 40 = 46
# 0x12f -> 15*16**0 + 2*16**1 + 1*16**2 = 15+32+256 = 303
2)十进制转其他进制
# 转二进制方法:bin - 将其他进制转二进制
# 转八进制方法:oct
# 转16进制方法:hex
print(bin(100))
print(oct(100))
print(hex(100))
print(bin(0x4a3))
3.原码、反码和补码
正数的反码、反码和补码一样
1)原码:符号位+真值
真值:数字绝对值的二进制, 符号位:0表示正,1表示非
10的真值:1010, -10的真值:1010
10的原码:01010, -10的原码:11010
计算机中10的原码:00001010 -10的原码: 10001010
2)反码 - 符号位不变,其他位取反
-10的反码(1字节):11110101
3)补码
-10的补码:11110110
# 内存最小单位是位(bit)
# 1字节 = 8位 (内存开辟的最小单位是字节)
# 1kb = 1024字节
# 1Mb = 1024kb
# 1G = 1024Mb
# 1T = 1024G
4.位运算
&(按位与), |(按位或), ^(按位异或), ~(按位取反), <<(左移), >>(右移)
位运算的特点:运算效劳高,内存消耗少;但是完成复杂运算的时候难度高
1)快速判断数字的奇偶性:数字 & 1
if num & 1 == 0:
print('偶数')
else:
print('奇数')
2)快速乘以2操作:数字 << 1
print(3 << 1)
print(12 << 1)
print(-5 << 1)
print(3 << 2)
3)快速整除2操作:数字>>1
print(4 >> 1)
print(6 >> 1)
print(9 >> 1) # 4
print(-9 >> 1) # -5