python复习

进制之间的转换

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f

二进制与八进制的关系

八进制最大数为7, 而7的二进制数为111, 所以 一个八进制数据=3位二进制数


如果要计算二进制到八进制时候, 则可以将二进制数3个3个拆解,然后进行拼接

111=2**2+2**1+2**0=4+2+1


二进制 八进制
001011 13 (001 011)
11011011100 3334(011 011 011 111 )

对于二进制 001011 可以拆解为 001,011, 001 转换成八进制是1, 011 转换成八进制数是 3, 所以最后的结果是13

对于二进制11011011100, 可以拆解为 011, 011, 011,111, 前面三个011的计算结果为3, 111的计算结果为4, 所以最后的结果是3334


二进制与十六进制的关系

八进制最大数为f,在十进制中表示为15, 十六进制中f(十进制中的15)的二进制数为1111, 所以 一个十六进制数据=4位二进制数


如果要计算二进制到十六进制时候, 则可以将二进制数4个4个拆解,然后进行拼接

1111=2**3+2**2+2**1+2**0=8+4+2+1


二进制 十六进制
11010111000 6b8
110101001 1a9

对于二进制 11010111000 可以拆解为 0110,1011, 1000

0110转换成十六进制是6, 1011 转换成十六进制数是 b, 1000转换成十六进制是8, 所以最后的结果是6b8

对于二进制 110101001 可以拆解为 0001,1010, 1001

0001转换成十六进制是1, 1010 转换成十六进制数是 a, 1001转换成十六进制是9, 所以最后的结果是1a9


python运算符


逻辑运算(二进制的加乘)

逻辑运算都是布尔运算, 而在布尔运算中, True 表示1, False 表示0, 本质上逻辑运算就是0和1的加法和乘法运算

与运算(and): 乘法

或运算(or): 加法

非运算(not): 切换True和False


位运算

<< 左移 ----------- 本质上就是二进制数往左偏移多少位, 本质上就是乘法, 往左偏移一位*2, 偏移2位*4


>> 右移 ----------- 本质上就是二进制数往右偏移多少位, 本质上就是除法, 往左偏移一位/2, 偏移2位/4


运算符优先级

  • 大概规律

单目运算符 > 双目运算符

索引运算符 > 属性访问运算符 > 乘除 > 加减 > 比较运算符 > is 运算符 > in 运算符 > 逻辑非 > 逻辑与 > 逻辑或

Python 运算符优先级和结合性一览表
运算符说明 Python运算符 优先级 结合性 优先级顺序
小括号 ( ) 19
︿
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 | 
 |
 |
索引运算符 x[i] 或 x[i1: i2 [:i3]] 18
属性访问 x.attribute 17
乘方 ** 16
按位取反 ~ 15
符号运算符 +(正号)、-(负号) 14
乘除 *、/、//、% 13
加减 +、- 12
位移 >>、<< 11
按位与 & 10
按位异或 ^ 9
按位或 | 8
比较运算符 ==、!=、>、>=、<、<=  7
is 运算符 is、is not 6
in 运算符 in、not in 5
逻辑非 not 4
逻辑与 and 3
逻辑或 or 2
逗号运算符 exp1, exp2 1

练习

1, python实现九九乘法表


start = range(1, 10)  
end = range(1, 10)

for i in start:
    for j in end:
        if not i<j:
            print('%s*%s=%s' % (j, i, i * j), end=' ')
    print(' ', end='\n')
posted @ 2020-05-13 00:26  cjw1219  阅读(268)  评论(0编辑  收藏  举报