主要内容:
计算机发展史
计算机硬件及操作系统
字符编码简介
Python简介
Python基础知识
一、初窥计算机的世界
1.简述计算机的发展史
从第一台电子计算机发展到今日,掐指算下来也有70余年的历史了(太古老的暂且不算进来)。大致来讲,计算机的发展分为以下几个阶段:
(1).第一代电子(电子管)计算机(1946-1958)
第一代电于计算机是从1946年至1958年。它们体积较大,运算速度较低,存储容量不大,而且价格昂贵。使用也不方便,为了解决一个问 题,所编制的程序的复杂程度难以表述。这一代计算机主要用于科学计算,只在重要部门或科学研究部门使用。
(2).第二代电子(晶体管)计算机(1958-1965)
第二代计算机是从1958年到1965年,它们全部采用晶体管作为电子器件,其运算速度比第一代计算机的速度提高了近百倍,体积为原来的 几十分之一。在软件方面开始使用计算机算法语言。这一代计算机不仅用于科学计算,还用于数据处理和事务处理及工业控制。
(3).第三代电子(集成电路)计算机(1965-1970)
第三代计算机是从1965年到1970年。这一时期的主要特征是以中、小规模集成电路为电子器件,并且出现操作系统,使计算机的功能越来 越强,应用范围越来越广。它们不仅用于科学计算,还用于文字处理、企业管理、自动控制等领域,出现了计算机技术与通信技术相结合的信 息管理系统,可用于生产管理、交通管理、情报检索等领域。
(4).第四代电子(大规模集成电路)计算机(1970-至今)
第四代计算机是指从1970年以后采用大规模集成电路(LSI)和超大规模集成电路(VLSI)为主要电子器件制成的计算机。例如80386微处理器,在面积约为10mm X l0mm的单个芯片上,可以集成大约32万个晶体管。
(5)第五代计算机(未来)
第五代计算机将把信息采集、存储、处理、通信和人工智能结合一起具有形式推理、联想、学习和解释能力。它的系统结构将突破传统的冯·诺依曼机器的概念,实现高度的并行处理。目前仍未实现,但已是未来计算机发展趋势。
计算机发展至今,已经占领了人类的方方面面,大到国家战略决策,小到百姓衣食住行。因此,作为共产主义接班人,我们有必要更深入地认识一下计算机的构成以及运行过程,以便于日后的学习和应用。
2.计算机硬件组成及实现原理
计算机发展至今,其结构组成一直延续着冯·诺依曼所提出来的概念,即:计算机由五大部分组成,分别是输入设备、输出设备、存储器、运算器和控制器。其运行原理如图所示:
其中,运算器和控制器的功能就是靠我们平常所见的CPU(Cntral Pocessing Unit)所实现的,而输出设备和输入设备是用户与计算机进行交流的部件。人把指令传给机器的部件都是输入设备,如常见的键盘、鼠标等。而能讲运算结果反馈给人的设备,都为输出设备,如显示器、音箱等。
抛开理论上的冯·诺依曼原型不说,日常中我们所用的PC,其硬件一般是由CPU、主板、电源、内存条、硬盘、显卡、声卡、网卡、显示器、鼠标键盘等组成。其中CPU实现运算器和控制器功能,主板(motherboard)是将五大部分连接起来的部件,所有设备几乎都是连在主板上进行协作,并由电源连接到主板后进行降压供电。目前市面上的主板一般都会集成网卡、显卡、声卡,如果主板支持,也可以在集成的基础上自行添加这些设备,用以实现更高要求的功能。硬盘和内存条分别是外部存储和内部存储,其中内存属于高速存储,直接与CPU进行数据沟通,但是断电后数据会丢失。外部存储速度较慢,但断电后可以保存收据,通过内存与CPU进行数据沟通。显示器键盘等用户交互设备这里就不赘述了。
最简单的计算机工作流程,先要用户通过输入设备将指令输入到CPU调用指令,然后CPU从外存储器中将数据调到内存储器中,与内存储器进行数据交换,任务完成后再将内存储器中所存储的返回到外存储器中进行永久存储,或者通过输出设备将处理结果展示给用户。而这个过程的硬件调用过程和软件运行过程,都是要在操作系统上进行的,下面我们就简述一下操作系统。
3.操作系统概述
操作系统(Operating system,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机””上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统几乎是伴随着电脑一路发展来的,这里不再介绍其发展过程。
我们的PC机常用的系统就是微软的Windows系统,除此之外还有生产环境中常用的Unix和Linux,以及苹果公司的OS X。目前计算机普及,相信家用的Windows系统大家都见到过,从Windows 95一直到现在的win10,系统不断在进步,操作也越来越方便。同样OS X也是较为常见的,是一种基于Unix基础的操作系统。Unix系统的稳定性很好,也是最早的操作系统,但由于其是不开源的,人们在后来的学习与交流中,逐渐开发出了完全开源的Linux。Linux广泛用于商业生产领域,目前主要的版本有Ubuntu、red hat、CentOS、debian等版本。
操作系统有32位和64位之分,对操作系统来说,64位和32位指最大内存寻址空间,32位最大4GB(2**32),64位理论上16EB(2**64),但现在一般都是2**48。这里的**表示幂运算,如2**4表示2的4次方。所以32位系统最大支持4GB内存,超过4GB以上都需要安装64位系统,才能读出其余内存。
二、字符编码简述
众所周知,机器只能识别二进制编码,即通电、断电两种状态。而人类习惯使用十进制,并且人类世界不光有数字,还有文字和特殊符号等。那么问题来了:人类和机器该如何进行沟通呢?为了能更好地利用计算机,人类对字符进行编码。最著名的就是较早的ASCII码:
计算机中规定的以八位为一个单位,也是由此而来的。另附计算机中的单位
位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。
字节 byte:8个二进制位为一个字节(B),最常用的单位。
1B(bytes) = 8bit
1KB (Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB(Trillionbyte 万亿字节 太字节)=1024GB,
1PB(Petabyte 千万亿字节 拍字节)=1024TB,
1EB(Exabyte 百亿亿字节 艾字节)=1024PB,
1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
1BB (Brontobyte 一千亿亿亿字节)= 1024 YB
但ASCII只能表示英文,于是各国不同语言制作了各自不同的字符编码表,例如我国的GB2312、GBK1.0以及目前的GB18030。世界上如此多的语言,因此各种字符编码不统一的问题开始显现,于是乎,为了统一规范,后来国际上推出了Unicode,即万国码或统一码,是业界的一种标准。但是如果要表示一个ASCII里的字符,使用unicode来表示太浪费空间,于是就有人想出了另外一种解决方案——UTF-8。UTF-8是对Unicode编码的压缩和优化,最大的特点是它采用了变长的编码方式,他不再是最少使用2个字节,而是将所有的字符进行分类。所以目前国际通用标准是,ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。
三、Python的自我介绍
大家好,我的名字叫Python,是一门面向对象、解释型计算机设计语言。我于1989年圣诞节期间出生,但是到1991年才上户。我的父亲叫Guido van Rossum,据说他是为了打发圣诞节无聊的时间,才创造的我。所以现在世界人口这么多,主要就是因为闲的。Anyway,我从1991年发布至今,已经有20多个年头,那我目前发展的怎么样呢?让我们来看个图:
看到了吧,目前主流语言中,我排世界第四,再前进一位就能拿奖牌了。也许有人好奇,我为什么会这么受欢迎呢?这里不得不提到一点,就是因为我是开源的,免费使用的。那也许有人会问,你为什么开源不收费呢?收费能赚很多吧。然而我要说,Python的缩写就是py,如果收费了,也就是说发生了交易,这岂不就成了py交易,不妥不妥,所以我还是免费给大家用吧~当然,玩笑归玩笑,个人认为,不开源确实是阻碍语言发展的一大原因,也许开源就是我发展较快的最大原因吧。这不,大家总结我的很多优缺点,不过也仅供参考:
优点
简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
易学:Python极其容易上手,因为Python有极其简单的说明文档 。
速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性:由于它的开源本质,Python已经被移植在许 多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、 OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。
解释性:一个用编译性语言比如C或C++写的程序可以从源代码(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(用户图形界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。
缺点
单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。
独特的语法
这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。
运行速度慢:这里是指与C和C++相比。
看看吧,这么多优点,这么少缺点,如此优秀的我,你们还有什么理由不学?
目前我有两个版本:Python2.x版本和Python3.x版本。很多人纠结于该用或者该学哪个版本的,这里就列一下官方发布的消息:
py2.7是2.x系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。所有的最新的标准库的更新改进,只会在3.x的版本里出现。Guido决定清理Python2.x ,并且不再兼容旧版本。最大的一个改变就是使用Unicode作为默认编码。Pyhton2.x中直接写中文会错,Python3中可以直接写中文了。从开源项目看,支持py3的比例已经大大提高,知名的项目一般都支持py2.7和py3+。py3比py2更规范统一、去掉了没必要的关键字,Python3.x还在持续改进中。Python2.x是遗产,而Python3.x是现在和未来。
过去属于死神,未来属于你自己。该怎么选,自己看着办咯(3.x!3.x!3.x!)。
Python被应用在众多领域:
数据分析: 2016/2月/11,美国科学家宣布发现引力波,分析观测30年的数据。分析引力波数据的Python包:GWPY
云计算 : 典型应用——Python开发的OpenStack
WEB开发: 众多优秀的WEB框架,Django、flask、 tornado
科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas。
系统运维: 运维人员必备,slatstack(系统自动化配置和管理工具),Ansible(自动化运维工具)
图形开发(GUI): wxPython、PyQT、TKinter
四、编程入门仪式之“Hello world.”
相信只要你接触过编程,不论哪种语言,一定听说过“hello world”。简单来讲,它是一种神圣的、程序员必修的入门程序,每个当程序员的,都要经过这个仪式,才算入了这个门。就好比入B社会要拜关二爷,所以这里特别用一节来表达一下对此仪式的重视。
首先,我们要来安装Python到我们的电脑上。浏览器输入:www.python.org 进入Python官网,选择download,再根据自己的系统选择相应的版本。下载好安装包以后,选好路径进行安装,安装结束后在环境变量里添加python的安装路径,具体步骤如下:
-
默认安装路径: python2 C:\python27 python3 C:\python35 最后一个数字指的就是当前版本,分别为2.7和3.5。安装过程也可以自定义路径
-
配置环境变量: 计算机->属性->计算机名称、域和工作组设置(更改设置)->高级->环境变量,在变量PATH中加入步骤2中的安装路径
用cmd命令打开交互器后输入python进入python程序,此操作要求已配置好环境变量,否则需要指定目录方可执行。输入print(“Hello world.”)回车,即可输出Hello world.的字样,如下图。这样做有个问题是,交互式解释器退出后程序就没了。交互式解释器是一个临时的程序运行环境,只能运行但是不保存。我们写的程序最终是要保存在文件里的,这样我们下次要运行程序的时候,运行我们上次保存的程序文件就可以了。
在交互器模式下有如下命令:
开始--》cmd --> cd c:\ -->dir
cd = change directory (改变当前目录)
dir = 查看当前目录文件列表
cd .. 返回上一层目录
cd ../.. 返回上上一层目录
cd ../../.. 返回上上上一层目录
cd ../../../.. 返回上上上上一层目录
新建一个hello.txt文件,在里边输入print(“Hello world.”)保存后退出,然后通过cmd命令打开交互器。通过cd命令进入文件所在目录,通过python运行hello.txt,输出结果如下:
这样一来,文件运行完了退出后也能得以保存。
五、Python基础概念
python常量与变量
常量:一旦绑定数值就不能更改。但python中没有常量,一般用首字母大写的变量名表示,默认不会更改
变量:数据的载体,可以赋任何值,而且赋值后可以继续更改。数据存放在内存中,需要一个载体将其放到程序中执行,而变量与数据有逻辑映射关系,通过变量可以找到对应的数据。就像一个文件,不论文件名叫什么,都不影响里边的内容,只不过通过文件名可以找到相应的文件。
变量命名规则:
1. 是由字母数字下划线组成
2. 不能以数字开头,不能含有特殊字符和空格
3. 不能以保留字命名
4. 不能以中文命名
5. 定义的变量名应该有意义
6. 驼峰式命名、 下划线分割单词 stuNum,stu_num
7. 变量名区分大小写
表达式:由数字、字符串和运算符等排列后得到的组合,一般用于赋予变量一定的值
Python中的运算符:
算术运算符:+-*/(加减乘除),** // %(指数运算、整除、求余)
比较运算符:>< ==(大于、小于、等于) !=(不等于)
逻辑运算符:and、or、not(与、或、非)
位运算符:&、|、^(按位与、按位或、按位异或),>>、<<(按位右移、按位左移)
Python中的用户交互:input(),例如:
1.name_input=input("name:") 2.print(name_input)
运行后,要求用户输入,输入后显示出输入内容。
Python中有,最基础的语句就是if...else...条件判断以及while循环和for循环。除了简单的循环外,循环中可以再嵌套循环。
if...条件1:
else...条件2
这个语句中,if和else下跟着执行语句,如果是两个以上条件,中间用elif。不管几个条件,都要做到不重不漏,这样才能逻辑严谨。
下面是只用if语句实现的输入3个数字找出最大值:
num1=int(input("Num1:")) num2=int(input("Num2:")) num3=int(input("Num3:")) if num1>num2: num=num1 if num3>num: print(num3) else: print(num) else: num=num2 if num3>num: print(num3) else: print(num)
下面是用while循环输出0-100之间的偶数:
i=0 while i<=100: if i%2 == 0: print(i) i+=1
下面是用for循环输出0-100之间的偶数:
for i in range(0,101): if i%2==0: print (i)
利用while的循环嵌套输出乘法表:
a=1 while a<10: b=1 while b<=a: print(str(b)+"*"+str(a)+"="+str(a*b),end="\t") b+=1 print() a+=1
第一篇博客结束语:
作为一名初学者,对计算机及编程知识的把握还没形成自己的方法,第一次写博客,内容有些简单且混乱。我会在以后的学习过程中慢慢改进,如有不当之处,求喷,你们的批评与指点是我前行的动力,如若能得大神指点,更是感激不尽。学习Python的平凡之路已经启程,那些结伴而行的人,愿我们通过自己的努力,都能获得成功。