1 数据类型
1.1 基本数据类型
python不用单独定义数据类型,需要某个变量直接赋值就可以使用。赋值赋什么它就是什么类型,并且后赋值的会覆盖先赋值。
a = 100 print(a) print(type(a)) a = 0.1 print(a) print(type(a)) a = hello print(a) print(type(a))
1.2 数据类型的转换
a = 100 print(type(a)) # int print(float(a)) # 100.0 print(str(a)) # 100 print(bool(a)) # True b = 1.9 print(type(b)) # float print(int(b)) # 1 print(str(b)) # 1.9 print(bool(b)) # True c = True print(type(c)) # bool print(int(c)) # 1 print(float(c)) # 1.0 print(str(c)) # 1.9 d = 1.9 print(type(d)) # str # print(int(d)) 类型转换只能一次(字符串——>浮点型——>整型)两次所以报错! print(float(d)) # 1.9 print(bool(d)) # True
2 运算符
2.1 算术运算符
a = 1 b = 2 print(a + b) print(b - a) print(a * b) print(a ** b) # a的b次方 print(a / b) print(a // b) # a整除b print(a % b) # a除以b的余数
2.2 关系运算符
a = 1 b = 2 print(a < b) # True print(a > b) # False print(a == b) # False print(a != b) # True x = abd y = abc print(x == y) # 逐个比较每个字符的ASCII码 print(x < y) score = float(input(输入你的成绩:)) # 注意,input所有键盘输入的内容都是字符串类型的 print(60 <= score <= 100) #输出True或False
2.3 逻辑运算符
# and :与 (有一侧为假即为假) a = 1 b = 2 print(b and a) # 1,两边都是非0的数,就打印后一个 c = 0 print(c and a) # 0,and两边只要有一边有0,结果就为0 # or :或 (有一侧为真即为真) print(a or b) # 1,两边都是非0的数,就打印前一个 print(c or b) # 2,or两边只要有一边不为0,就打印不为0的数 # not flag = True print(not flag) # False print(a > c) # True print(not a > c) # False
2.4 位运算
n1 = 0b0110 # 6 n2 = 0b1100 # 12 print(n1 & n2) # 与运算:二进制进行运算,同真(1)则真(1),只有都是1时结果是1 # 0b0110 # 0b1100 # -------- # 0b0100 # 4 print(n1 | n2) # 或运算:二进制进行运算,同假(0)则假(0),只有都是0时结果是0 # 0b0110 # 0b1100 # -------- # 0b1110 # 14 print(n1 ^ n2) # 异或运算:二进制进行运算,只有不相同时为1,相同即为0 # 0b0110 # 0b1100 # -------- # 0b1010 # 10
前置知识: 计算机操作都是对补码进行操作,正数的补码就是原码,负数的补码要进行计算。 已知十进制负数,求二进制负数的计算:例如-7 (1) 原码(注意不要忘记符号位):1000 0000 0000 0000 0000 0000 0000 0111 (2) 反码(原码除符号位其他都取反):1111 1111 1111 1111 1111 1111 1111 1000 (3) 补码 (反码+1):1111 1111 1111 1111 1111 1111 1111 1001 -7的二进制也就是 (3) 中得出的。 已知二进制的负数,求对应的十进制:例如拿到-7的二进制(补码),1111 1111 1111 1111 1111 1111 1111 1001 (1) 拿到的是补码,首先减一:1111 1111 1111 1111 1111 1111 1111 1000 (2) 然后求得反码: 1000 0000 0000 0000 0000 0000 0000 0111 (3) 最后求得十进制:122+121+1*20 = 7,再加上符号位就是-7。 特别注意:取反时符号位不变,符号位即最高位
n1 = 0b0110 print(~n1) # 取反: # (1)原码(因为是正数,原码和补码相同):0000 0000 0000 0000 0000 0000 0000 0110 # (2)取反:0111 1111 1111 1111 1111 1111 1111 1001 # (3)取反后得到的是一个负数的补码,所以需要转换成原码才能转换成十进制 # (4)补码减一得到反码:0111 1111 1111 1111 1111 1111 1111 1000 # (4)反码取反得到原码:0000 0000 0000 0000 0000 0000 0000 0111
n = 0b00001100 # 12 print(n << 2) # 48 相当于乘以2的2次方 print(n << 3) # 96 相当于乘以2的3次方 print(n >> 2) # 3 相当于处以2的2次方 print(n >> 3) # 1 相当于处以(整除)2的3次方
3 格式化输出
name = 千颂伊 age = 30 print(她最喜欢 + str(age) + 岁的 + name) print(她最喜欢%d岁的%s % (age, name))
4 进制转换
n = 149 result = bin(n) # 十进制转二进制,0b10010101 result = oct(n) # 十进制转八进制,0o225 result = hex(n) # 十进制转十六进制,0x95
注意:是0b、0o、0x。(0是数字零,不是字母欧)
十六进制转二进制: 0x558 0b 0101(5) 0101(5) 1000(8) 0xbac 0b 1011(b) 1010(a) 1100©
十六进制转八进制(先转成二进制): 0x558 0b 0101(5) 0101(5) 1000(8) 0o 010(2) 101(5) 011(3) 000(0)
八进制转二进制: 0o 726 0b 111(7) 010(2) 110(5)
二进制转十六进制: 0b 1000 1010 0101 0111 0x 8 a 5 7
二进制转八进制: 0b 1000 1010 0101 0111 0o 1 0 5 1 2 7
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290975.html