2.格式化输出-运算符-编码
格式化输出
在字符串中,用了%s或者%d这种形式,那么后面的%,认为是站位,如果需要用到%,需要写成%%
s=input("你多大了:") print("哦,你%s岁了"%(s)) #%s 字符串的站位 age=int(s) print("哦,你%d岁了"%(age))#%d 整数的站位 print("%%在前,%d"%(age)) #在字符串中只要用到%s、%d这些占位符,那么在其中想要使用%本身,就要进行转译:%%
运算符
算术运算 :%(取模) **(幂) //(取商)
a=3 #这个数字可以用input方法自己输入 b=11 print("%d取模%a为:"%(b,a),b%a) print("%d次幂%a为:"%(b,a),b**a) print("%d整除%a为:"%(b,a),b//a)
比较运算:== 判断是否相等 !=、<>两个都是判断是否不等于
a="xiaoming" b="xiaoli" if a==b: print("两者相等") if a!=b: #<>看自己的版本是否支持 print("两者不等")
赋值运算:+= %= **=...
a=3 b=11 a+=b #等价于a=a+b %=、**=同理 print(a)
逻辑运算
and:和、并且 左右两端必须同时为真(True)结果才能为真
or: 或、或者 左右两端有一个是真,结果就为真
not:取反 是真为假,是假为真
运算顺序:先算的永远是括号 --> not -->and-->or ,同样的运算符从左往右算
print(2>4 or 7<3 and 9>22 or 8<34) #结果为T # F or F or T # F or T print((2>4 or 7<3) and (9>22 or 8<34)) #结果为F
该运算输出: or 如果第一位是非零,输出第一位,如果是领输出第二位(and刚好相反)
#or 如果第一位是非零,输出第一位,如果是零则输出第二位 print(0 or 3) print(2 or 3) print(0 and 3) #and的输出刚好与or相反 print(2 and 3) print(0 and 3 and 5 and 4 and 7) #这五行代码输出的都是零 print(3 and 0 and 5 and 4 and 7) print(3 and 5 and 0 and 4 and 7) print(3 and 5 and 4 and 0 and 7) print(3 and 5 and 4 and 7 and 0) print(1<3 or 8) #表达式正确 输出的是TRUE
编码
编码相当于密码本,关系到二进制与看懂的字符之间的对应关系。
密码本的发展史
ascii码:只包含英文字母、数字、特殊字符
0000 0100:(起初是7位,美国设计的,这128种可能足够满足他们的使用需求,之后改为8位,而最左边的位是预留位永远是0)
对于ascii码,表示一个字符需要用8位代表的一个字节
ansi (是ascii码空余的位置让各个国家继续编码)之后演变成bgk(国标)
unicode(万国码):就是将是加上所有的文字都汇总在一起,unicode都能够将其表示出来,并与之对应。(编码的根本)
起初unicode:一个字符用16位表示 Z:0000 0000 0101 1010 (不满足对应需求)
最终unicode:一个字符用32位表示 Z:0000 0000 0000 0000 0000 0000 0101 1010 (32位占用资源,浪费,引出utf-8)
utf-8:最少用8位去表示一个字符,是对unicode的升级版(广泛使用)
Z:0101 1010
欧洲文字:0000 0000 0101 1010
亚洲文字:0000 0000 0000 0000 0101 1010
gbk:国标,就是适合自己国家的编码
英文字母:用一个字节表示
中文:用两个字节表示
#字符:组成你看到的内容的最小单位就是字符
#位:二进制中占有的位置,就是位
#字节:8位代表一个字节
编码之间的转换(encode()与decode())
str:在内存中存储是使用的unicode的编码格式,而在传输数据的时候是不允许使用unicode的格式的
bytes:就在传输的时候用到,除了存储的格式为utf-8和表现形式,其余的与str类型几乎是一样的
s = 'shuaiqi' #str的表现形式 b1 = b'shuaiqi' #bytes的表现形式 s1 = '帅气' #str的表现形式 b2 = s1.encode('utf-8') #bytes的表现形式会变为b'\xe4\xb8\xad\xe5\x9b\xbd'
s2=b2.decode('utf-8') #s2输出为 帅气
gbk转换成utf-8
之间可以直接转换(仅限于最初的ascii码所代表的字符)
要通过unicode间接转换
#英文的直接转换 s1 = 'shuaiqi' b1 = s1.encode('gbk') b2 = b1.decode('utf-8') print(b2) #中文的间接转换 s1 = '帅气' b1 = s1.encode('gbk') print(b1) b2 = b1.decode('gbk').encode('utf-8') print(b2)
计算机存储系统单位换算
字节byte:8个二进制位为一个字节(B),最常用的单位。
1 Byte(B) = 8 bit
1 Kilo Byte(KB) = 1024B
1 Mega Byte(MB) = 1024 KB
1 Giga Byte (GB)= 1024 MB
1 Tera Byte(TB)= 1024 GB
1 Peta Byte(PB) = 1024 TB
1 Exa Byte(EB) = 1024 PB
1 Zetta Byte(ZB) = 1024 EB
1Yotta Byte(YB)= 1024 ZB
1 Bronto Byte(BB) = 1024 YB
1Nona Byte(NB)=1024 BB
1 Dogga Byte(DB)=1024 NB
1 Corydon Byte(CB)=1024DB