编码格式
计算机是由美国人发明的,所以一开始只能显示英文字符串,是ASCII格式编码。后来由于全球各国都在使用计算机,又新出了Unicode编码格式。但是Unicode非常庞大,在本地运行还好,但是对于网络传输简直是太浪费空间了,所以又出现了utf(包括utf-8、utf-16、utf-32)编码格式。
现在一般是使用utf-8编码格式进行网络传输,然后到本机后再解析成Unicode编码,这样就完美的解决了编码带来的问题。
在Python中我们可以:
使用ord函数来获取一个字符的Unicode值;
使用chr函数来获一个Unicode值对应的字符;
在Python3.0以上版本中,会默认以Unicode编码,但是有的时候我们需要使用其他的编码格式,这有该如何做呢?请看下面的例子(注意不能是汉字,因为ASCII存放不下一个汉字)
我们看到前面有一个b,代表是byte的意思,里面的每一个字符只占一个字节。
我们在进行ASCII和Unicode编码间进行转换的时候,会出现下面的问题
这是因为一个byte存放不下一个汉字。
decode和encode之间的转换
虽然以上我们都称为字符串,但是存储的意义不一样,带b的字符串和不带b的字符串其实是两个不同的字符串。带b的字符串我们一般认为是bytes的字符串,它是以字节为单位,强调的是一个一个的字节;而不带b的字符串就是一个Unicode的字符串。
由于Python现在越来越接近底层的开发,所以就加上了b开头的字符串。
通过上面的例子可以更好的说明这两者的关系。
len函数用来统计字符串中字符的个数
下面的现象说奇怪也不奇怪,因为len函数可以根据存储类型来计算字符的格式。
bool类型
用于判断
比如下面的任务:
完成一个登陆系统,超过三次登陆失败,程序退出
count = 0;
while (count < 3) :
name = input("Please Input UserName:")
pwd = input("Please Input PassWord:")
if (name == "root") and (pwd == "root"):
print("Login Success!")
break
else :
if (count < 2) :
print("Login Failed! And You Have ",2-count ,"times, Please Reload!")
else :
print("Login Failed! And You Have No Chance To Reload!")
count = count+1