python(1)- 初识python
一、了解编程语言
1.编程语言的定义
编程语言即语言,语言的本质就是沟通,因而编程语言与英语 、法语、日语等所有语言并无区别,只不过英语是人与人之间沟通的介质,而编程语言则是程序员与计算机沟通的介质。
程序员把自己想要说的话用编程的语言写到文件里,这其实就开发了一个程序,接下来让计算机按照文件里说的内容去做事情,这就是程序的执行。
2.编程语言种类
机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
优点:灵活、直接执行和速度快。
缺点:不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。
汇编语言:汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
优点:能完成一般高级语言所不能实现的操作,而且源程序经汇编生成的可执行文件不仅比较小,且执行速度很快。
缺点:源程序比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识。
高级语言:高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,
例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(先翻译/编译成字节码,然后由解释器解释执行,这个过程程序员都无需关心了,享受这种便利即可)。 python就是解释类语言,此外,JavaScript / Perl /Shell等都是解释型语言。 优点:这种方式比较灵活,可以动态地调整、修改应用程序。 缺点:效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器。 编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言)。 优点:其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。 缺点:但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件才能执行,只有目标文件而没有源代码,修改很不方便。大多数的编程语言都是编译型的 例如Visual C++、Visual Foxpro、Delphi等。
二、python简介
1.Python应用领域
数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、
BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:
自动化运维、自动化测试、大数据分析、爬虫、Web 等。
注视:上述重点字体表示该公司主要使用Python语言开发
2.Python语言与其他语言的区别
C 和 Python、Java、C#等 C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作 其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行 Python 和 C Python这门语言是由C开发而来 对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多. Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持 对于速度:Python的运行速度相较与C,慢很多。比其他几门语言速度上也比较慢。 速度永远不是关键,对大多数的应用程序来说,并不需要这么快的运行速度,因为用户根本感觉不出来。 对于加密:对于编译型语言如C语言来说,可以将编译后的代码发给用户,用户反解几乎是不可能的,相当于自带加密功能了。 而解释型语言如python只能发布源码给用户,但现在主流的思想是软件开源。
3.Python的种类
(1)Cpython(最常用的版本) Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机. (2)Jyhton Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 (3)IronPython Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似) (4)PyPy(特殊) Python实现的Python,将Python的字节码字节码再编译成机器码。 (5)RubyPython、Brython ...
三、python环境
windows:
1、下载安装包 https://www.python.org/downloads/ 2、安装 默认安装路径:C:\python27 3、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 如:原来的值;C:\python27,切记前面有分号
linux:
无需安装,原装Python环境 ps:如果自带2.6,请更新至2.7
更新Python
windows:
卸载重装即可
linux:
Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python
查看默认Python版本 python -V 1、安装gcc,用于编译Python源码 yum install gcc 2、下载源码包,https://www.python.org/ftp/python/ 3、解压并进入源码文件 4、编译安装 ./configure make all make install 5、查看版本 /usr/local/bin/python2.7 -V 6、修改默认Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python 7、防止yum执行异常,修改yum使用的Python版本 vi /usr/bin/yum 将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6
四、python入门
1.hello world
在D:\python_test\目录下新建文件hello.py,编写代码如下
print('hello world')
执行hello.py,即python D:\python_test\hello.py
2.指定解释器
window平台下python D:\python_test\hello.py时,明确的指出 hello.py 脚本由 python 解释器来执行。
linux平台中如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py
,那么就需要在 hello.py 文件的头部指定解释器,如下:
#!/usr/bin/env python print('hello world')
3.字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代
英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字
符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符
用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码
在python3中默认utf-8,,可以编码中文
在python2中默认ascill,ascii码无法表示中文
如果是如下代码的话:
#!/usr/bin/env python print "你好,世界" --->报错:ascii码无法表示中文
改正:应该显示的告诉python解释器,用什么编码来执行源代码
#!/usr/bin/env python # -*- coding: utf-8 -*- print "你好,世界"
4.注释
单行注视:# 被注释内容
多行注释:""" 被注释内容 """
注释快捷键:选中被注释的内容,ctrl+?注释选中的内容,再次ctrl+?取消注释
5 执行脚本传入参数
Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:
(1)Python内部提供的模块;(2)业内开源的模块;(3)程序员自己开发的模块
Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys print sys.argv
执行
C:\Users\Administrator>python D:\python_test\hello.py arg1 arg2 arg3 ['D:\\python_test\\hello.py', 'arg1', 'arg2', 'arg3']
6.pyc文件
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
7.变量
声明变量
#!/usr/bin/env python name='egon'
变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
关键字不能声明为变量名
变量的赋值
#!/usr/bin/env python name1='lhf' name2='egon'
变量指向被赋值的内容
#!/usr/bin/env python name1='lhf' name2=name1
变量的存在意义:程序执行的本质在于处理一系列状态的变化,变量就用来保存某一种状态,比如level=1,age=10,name='egon',变量的值的修改(即变量的赋值)就是一种状态的变化,不同的数据类型用来表示不同的状态,比如数字类型用来表示人的年纪,等级,身份证等等
#!/usr/bin/env python #一个游戏人物的等级由1级升到2级 level=1 level=2 #一个游戏帐号的密码由'123'改成'456' passwd='123' passwd='456' #一个人的名字有'xyp'改成'xuyaping' name='xyp' name='xuyaping'
8.输入
#!/usr/bin/env python name=input('请输入用户名:') print(name)
执行
C:\Users\Administrator>python D:\python_test\hello.py 请输入用户名:xuyaping xuyaping
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python import getpass password=getpass.getpass('请输入密码:') print(password)
执行
C:\Users\Administrator>python D:\python_test\hello.py 请输入密码: 123456
9.流程控制和缩进
python中子内容统一被缩进相同的空格数,如1,2,3,4,5,6,,7,8等随意设定,只需要统一即可。
但python中默认缩进4个空格
例子一、用户登陆验证
#!/usr/bin/env python name=input('请输入用户名字:') password=input('请输入密码:') if name == 'xuyaping' and password == '123': print('xuyaping login success') else: print('用户名或密码错误')
例子二、根据用户输入内容输出其权限
#!/usr/bin/env python #根据用户输入内容打印其权限 ''' xuyaping --> 超级管理员 tom --> 普通管理员 jack,rain --> 业务主管 其他 --> 普通用户 ''' name=input('请输入用户名字:') if name == 'xuyaping': print('超级管理员') elif name == 'tom': print('普通管理员') elif name == 'jack' or name == 'rain': print('业务主管') else: print('普通用户')
10.while循环
10.1:基本循环
while 条件: # 循环体 # 如果条件为真,那么循环体则执行 # 如果条件为假,那么循环体不执行
10.2:break
break用于退出所有循环
while True: print "123" break print "456"
10.3:continue
continue用于退出当前循环,继续下一次循环
while True: print "123" continue print "456"
五、本节练习
1、使用while循环输出1 2 3 4 5 6 8 9 10
2、求1-100的所有数的和
3、输出 1-100 内的所有奇数
4、输出 1-100 内的所有偶数
5、求1-2+3-4+5 ... 99的所有数的和
6、用户登陆(三次机会重试)
#题一 count=1 while count <= 10: if count == 7: count+=1 continue print(count) count+=1 count=1 while count <= 10: if count != 7: print(count) count+=1 #题目二 res=0 count=1 while count <= 100: res+=count count+=1 print(res) #题目三 count=1 while count <= 100: if count%2 != 0: print(count) count+=1 #题目四 count=1 while count <= 100: if count%2 == 0: print(count) count+=1 #题目五 res=0 count=1 while count <= 99: if count%2 == 0: res-=count else: res+=count count+=1 print(res) #题目六 count=0 while count < 3: name=input('请输入用户名:') password=input('请输入密码:') if name == 'xuyaping' and password == '123': print('login success') break else: print('用户名或者密码错误') count+=1