PYTHON 基本运算符及编码发展简史

今天,继续更博,首先我们一起来看一下,PYTHON中的运算符,也是今天的重头戏,佐料我会加一些编码的发展简史,供大家学习与参考。

计算机可以运行的编码有很多种,篇幅有限,在此不一一罗列了,只介绍比较常见的四种吧。

一.基本运算符

一.算术运算

    

    除去“加,减,乘,除”四则运算,还有一些比较使用的运算操作符。

二.比较运算

    

    比较运算符,你会发现也是由操作运算符构成,特别记忆一下“不等于”即可。

三.赋值运算符

    

    记忆起来很方便是不是?

四.逻辑运算符

    

    “与”,“或”,“非”,你没有看错,初中我们就接触过。

二.编码发展简史

    计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。

    字符集(Charset):是一个系统支持的所有抽象字符的集合。

    字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。

1.常用的字符集和字符编码

    常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,也是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

    ASCII字符集:主要包括控制字符(回车键、退格、换行键等);可显示字符(英文大小写字符、阿拉伯数字和西文符号)。

    ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。使用7位(bits)表示一个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。

    不过,即使作为最通用的单字节编码系统,也不可避免地存在着致命缺点,那就是当它面临除英文之外的其他多语种时,便捉襟见肘了。值得一提的是,苹果公司已经将ASCII抛弃,转而投入到了Unicode编码的大军中。

2.2. GBXXXX字符集&编码

    计算机发明之处及后面很长一段时间,只用应用于美国及西方一些发达国家,ASCII能够很好满足用户的需求。但是当天朝也有了计算机之后,为了显示中文,必须设计一套编码规则用于将汉字转换为计算机可以接受的数字系统的数。

    天朝专家把那些127号之后的奇异符号们(即EASCII)取消掉,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。

3.Unicode字符集&UTF编码

    不得不说,Unicode的出现是一个伟大的创想,像天朝一样,当计算机传到世界各个国家时,为了适合当地语言和字符,设计和实现类似GB232/GBK/GB18030/BIG5的编码方案。虽然突破了本地的编码识别的障碍,但一旦进入到网络中,弊端便暴露无遗,由于不兼容,互相访问就出现了乱码现象。

    Unicode自然应运而生,其编码系统专为表达任意语言的任意字符而设计。它使用4字节的数字来表达每个字母、符号,或者表意文字(ideograph)。每个数字代表唯一的至少在某种语言中使用的符号。排除掉语源学的因素,Unicode编码每个字符对应一个数字,每个数字对应一个字符。即不存在二义性,更加降低了人们之间交流的成本。当之无愧的成为了业界的一种标准,而且如今的Unicode还在不断扩展自身的内容,每个新版本都在插入更多新的字符。

此处,省略掉Unicode的其他两种编码方案,着重介绍一下utf-8编码方案。

3.4.UTF-8

    UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码(定长码),也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。

    UTF-8使用一至四个字节为每个字符编码,在处理经常会用到的ASCII字符方面非常有效。在处理扩展的拉丁字符集方面也不比UTF-16差。对于中文字符来说,比UTF-32要好。同时,(在这一条上你得相信我,因为我不打算给你展示它的数学原理。)由位操作的天性使然,使用UTF-8不再存在字节顺序的问题了。一份以utf-8编码的文档在不同的计算机之间是一样的比特流。

    缺点

    因为每个字符使用不同数量的字节编码,所以寻找串中第N个字符是一个O(N)复杂度的操作 — 即,串越长,则需要更多的时间来定位特定的字符。同时,还需要位变换来把字符编码成字节,把字节解码成字符。

格式化输出:(结尾的彩蛋吧。)

    

name = input("请输入你的名字: ")
age = input("请输入你的年龄: ")
city = input("你喜欢的城市: ")

print(f"我叫{name}, 我的年龄是{age}, 我喜欢的城市是{city}")  #format
print("我叫%s, 我的年龄是%s, 我喜欢的城市是%s" % (name, age, city))

    希望大家喜欢。注:关于编码的发展简史,部分摘自网页。

 

posted on 2018-11-27 20:33  地球上的小东西  阅读(212)  评论(0编辑  收藏  举报