python运算符
算术运算符
比较(关系)
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符
数字系统
定义了如何用独特的符号来表示一个数字
位置化数字系统:十进制、二进制、十六进制、八进制
-
十进制(decimal):
- 底为10,用10个符号表示一个数,S = {0,1,2,3,4,5,6,7,8,9}
- 552.23 = +(552.23)10(10为下角标格式)
- 整数: 224 = + 2 * 10 ** 2 + 2 * 10 ** 1 + 4 * 10 ** 0
- 实数: 24.13 = + 2 * 10 ** 1 + 4 * 10 ** 0 + 1 * 10 ** -1 + 3 * 10 ** -2
-
二进制(binary):
- 底为2,用2个符号表示一个数,S = {0,1}
- 同理十进制
二进制过长,十进制不便直接显示存储,二者之间没有显然关系,转换不快捷,因此,发明了十六进制和八进制。
-
十六进制(hexadecimal):
- 底为16,用16个符号表示一个数,S = {0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)}
- 表示数字方法类似上述方法
-
八进制(octal):
- 底为8,用8个符号表示一个数,S = {0,1,2,3,4,5,6,7}
- 表示数字方法类似上述方法
##转换:
bin()可以把int转换为二进制字符串,int可以把二进制数字类型转换为十进制
- 其他进制转十进制:
数码乘对应位置量再相加即可,代码:\
f1 = int(0b11100000)
print(f1)
>_224_
- 十进制转其他进制:
- 整数部分:连除,代码:
f = 35
f1 = f % 2 # 余数 1
f2 = f // 2 #商 17
print(f1,f2)
f3 = f2 % 2 # 余数 1
f4 = f2 // 2 #商 8
print(f3,f4)
f5 = f4 % 2 # 余数 0
f6 = f4 // 2 #商 4
print(f5,f6)
f7 = f6 % 2 # 余数 0
f8 = f6 // 2 #商 2
print(f7,f8)
f9 = f8 % 2 # 余数 0
f10 = f8 // 2 #商 1
print(f9,f10)
f11 = f10 % 2 # 余数 1
f12 = f10 // 2 #商 0
print(f11,f12)
>_1 17
1 8
0 4
0 2
0 1
1 0_
结果:0b100011
- 小数部分:连乘,当小数部分为0或者达到足够的位数时结束。代码:\
f = 0.625
f1 = f * 2 # 源 0.25 #目标 1
print(f1)
f = 0.25
f1 = f * 2 # 源 0.5 #目标 0
print(f1)
f = 0.5
f1 = f * 2 # 源 0 #目标 1
print(f1)
>_1.25\
0.5\
1.0_
结果:.101
关于数码的数量:k=logbN向上取整。b为进制底数,N为十进制数
-
二进制-十六进制、八进制:
二进制中的4位恰好是十六进制中的1位
二进制中的3位恰好是八进制中的1位。直接换算即可。 -
八进制-十六进制:
先将八进制转为二进制,然后转十六进制
算术运算符
+、-、*、/、%(取模-返回除法的余数)、**(幂-返回x的y次幂)、//(取整除-向下取接近除数的整数)
##字符串运算
- 字符串与数字不能直接参与运算
- 字符串和字符串使用“+”结果是字符串的拼接;字符串和字符串使用“*”结果是重复前面的字符串。
代码:
l = 'love'
s = 'i' + l + 'you'
f = f'i { l } you'
f1 = 'i { l } you'.format(l=l)
f2 = '1'*5
print(s,f,f1,f2)
iloveyou iloveyou iloveyou 11111
赋值运算符
=、+=、-=、*=、/=、%=、**=、//=
c+=a 就是 c=c+a , 其他同理
比较运算符
== 、!= :不相等 、> :大于 、< :小于 、>= :大于等于 、<= :小于等于
逻辑运算符
- and : 布尔“与”, 一个为假就假,都真返回后面那个值
x = 10
y = 20
print(x and y)
y = 0
print(x and y)
20
0
- or : 布尔“或”, 一个为真就真,全真返回前面的值,否则返回真的那个值
x = 10
y = 20
print(x or y)
y = 0
print(x or y)
x = 0
print(x or y)
10
10
0
- not : “非”, 取反
##位运算符
- “&” 与
a = 0b111100
b = 0b001101
print(bin(a&b))
0b1100
- “|” 或
a = 0b111100
b = 0b001101
print(bin(a|b))
0b111101
- “^” 异或
a = 0b111100
b = 0b001101
print(bin(a^b))
0b110001
- “~” 按位取反
a = 0b111100
b = 0b001101
print(bin(~a))
-0b111101
- “<<” 左移
a = 0b111100
b = 0b001101
print(bin(a<<2))
0b1111
- “>>” 右移
a = 0b111100
b = 0b001101
print(bin(a>>2))
0b11110000
##其他运算符
- 成员运算符:in 是否在指定序列中
f1 = 'i love you'
print('love' in f1)
print('love' not in f1)
f1 = {'name':2,'love':'i'}
print(2 in f1,'love' in f1)
True
False
False True
- 身份运算符:is 判断两个标识符是不是引用自一个对象
a = 10
b = 10
print(id(a),id(b))
print(a is b )
140722335937072 140722335937072
True
##优先级
由高到低:
** 、~ +@ -@ 、* / % // 、+ - 、>> << 、& 、^ | 、<= < > >= 、== != 、= %= /= -= += *= **= 、is isnot 、in not in 、not 、and 、or
有小括号的优先运算小括号里的