第一篇:初识Python

  • 一 本节目标
  • 二 了解编程语言
  • 2.1 为何要编程?
  • 2.2 什么是编程语言?
  • 2.3 编程语言分哪些种类?
  • 三 python简介
  • 3.1 Python的前世今身
  • 3.2 Python能够应用于众多领域
  • 3.3 python是一种怎样的语言
  • 3.4 为什么选择Python
  • 3.5 Python解释器的种类
  • 3.6 python解释器的发展史
  • 四 python环境
  • 五 python入门
  • 5.1 第一句python代码
  • 5.2 文件头
  • 5.3 注释
  • 5.4 执行脚本传入参数
  • 5.5 了解pyc文件
  • 六 变量
  • 6.1 为什么要有变量
  • 6.2 变量的声明与引用
  • 6.3 标识符命令规范:
  • 6.4 变量的赋值
  • 七 输入输出
  • 八 简单的运算符
  • 九 流程控制
  • 9.1 条件语句
  • 9.2 循环语句
  • 十 本节练习

一 本节目标

  • 了解编程语言
  • 了解python及与其余语言的优劣对比
  • 安装python解释器及环境变量配置、运行python交互式环境
  • 打印hello world程序
  • 初识变量、用户输入,流程控制,while循环
 

二 了解编程语言

 

2.1 为何要编程?

解放人力:让机器(好比计算机)按照人们事先为其编写好的程序自发地去工做php

2.2 什么是编程语言?

 

人----------->汉语--------------->中国人html

 

                   八格牙路----------->日本人java

 

                   汪汪汪------------->狗python

 

                   编程语言----------->计算机linux

 

编程语言即语言,语言的本质就是沟通,于是编程语言与英语 、法语、日语等全部语言并没有区别,只不过英语是人与人之间沟通的介质,而编程语言则是程序员与计算机沟通的介质。c++

程序员把本身想要说的话用编程的语言写到文件里,这其实就开发了一个程序,接下来让计算机按照文件里说的内容去作事情,这就是程序的执行。程序员

 

2.3 编程语分哪些种类?

一:机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
优势:灵活、直接执行和速度快。
缺点:不一样型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另外一种计算机上执行。 二:汇编语言:汇编语言的实质和机器语言是相同的,都是直接对硬件操做,只不过指令采用了英文缩写的,标识符更容易识别和记忆。它一样须要编程者将每一步具体的操做用命令的形式写出来。
优势:能完成通常高级语言所不能实现的操做,并且源程序经汇编生成的可执行文件比较小,且执行速度很快。
缺点:源程序比较冗长、复杂、容易出错,并且使用汇编语言编程须要有更多的计算机专业知识。 三:高级语言:明确地讲,高级语言就是说人话,用人类能读懂的(好比英文)字符编程。高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令而且去掉了与具体操做有关但与完成工做无关的细节,例如使用堆栈、寄存器等。
优势:大大简化了程序中的指令。同时,因为省略了不少细节,编程者也就不须要有太多的专业知识。
缺点:高级语言所编制的程序不能直接被计算机识别,必须通过转换才能被执行。
按转换方式可将它们分为两类: 解释类:执行方式相似于咱们平常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(如python程序,先翻译/编译成字节码,而后由解释器解释执行,这个过程程序员都无需关心了,享受这种便利便可),一边执行
优势:这种方式比较灵活,调试程序极为方便,程序一旦出错,当即调试当即就能够测试结果
缺点:效率比较低,并且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器。只在执行程序时,才一条一条的解释成机器语言给计算机来执行,因此运行速度是不如编译后的程序运行的快的. 

编译类:编译是指在程序执行以前,就将程序源代码“翻译”成机器指令,并保存成二进制文件      优势:编译后的代码能够直接在机器上运行,运行速度比解释型要高。      缺点:调试程序麻烦,程序一旦须要修改,必须先修改源代码,再从新编译后才能执行。

总结:编程语言经历了:机器语言-------->汇编语言------------>高级语言(java,C#,php,ruby,python)web

1:开发效率从低到高shell

2:执行效率从高到低编程

3:掌握难度从难到易

注解:执行效率不是问题,硬件已经足够用,因而开发效率成了关键,于是高级语言在当今世界大行其道。

三 python简介

3.1 Python的前世今身

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,做为ABC语言(由Guido参加设计的一种教学语言,是专门为非专业程序员设计的,优美强大可是流产了,非开源)的一种继承。

最新的TIOBE排行榜,Python跃居第五!!!

摘自http://www.tiobe.com/tiobe-index/

由上图可见,Python总体呈上升趋势,反映出Python应用愈来愈普遍而且也逐渐获得业内的承认!!!

3.2 Python能够应用于众多领域

由上图可见,Python总体呈上升趋势,反映出Python应用愈来愈普遍而且也逐渐获得业内的承认!!!

Python能够应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎全部大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。

目前Python主要应用领域:

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,并且重要性逐年提升。缘由:做为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤为擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

Python在一些公司的应用: 

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
  • CIA: 美国中情局网站就是用Python开发的
  • NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
  • YouTube:世界上最大的视频网站YouTube就是用Python开发的
  • Dropbox:美国最大的在线云存储网站,所有用Python实现,天天网站处理10亿个文件的上传和下载
  • Instagram:美国最大的图片分享社交网站,天天超过3千万张照片被分享,所有用python开发
  • Facebook:大量的基础库均经过Python实现的
  • Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
  • 豆瓣: 公司几乎全部的业务均是经过Python开发的
  • 知乎: 国内最大的问答社区,经过Python开发(国外Quora)
  • 春雨医生:国内知名的在线医疗网站是用Python开发的
  • 除上面以外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各类各样的任务。

3.3 python是一种怎样的语言

编译型vs解释型

编译型
优势:编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高。能够脱离语言环境独立运行。
缺点:编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的运行环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。

解释型
优势:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

注解:java代码号称一次编译处处运行,由于java代理须要先编译成字节码(一种中间格式的代码),而后拿着字节码处处运行,每次运行都须要交给jvm去编译成机器指令后才能执行,于是java是混合型

而有的人会有疑问,python代码也是先编译成字节码而后交给python解释器去执行的啊,难道python不是混合型吗?固然不是

1. 首先须要知道,只有在import导入py文件时,才会产生pyc字节码文件,该字节码文件是能够代替源文件而直接执行的

2. 但每次执行py文件,产生的字节码并不会保留下来,也就是说,每次执行py文件,都是要从新经历一遍:py文件->字节码-->python解释器-->机器码,每次都是一个从新解释执行的过程。

3.4 为什么选择Python

这他妈的还用问,你都TMD看了这么多,还TMD问这种问题?

C 和 Python、Java、C#等

    C语言: 代码编译获得 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工做

其余语言: 代码编译获得 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

CPython解释器是由C语言开发的

  对于使用:Python的类库齐全而且使用简洁,若是要实现一样的功能,Python 10行代码能够解决,C可能就须要100行甚至更多.
  对于速度:Python的运行速度相较与C,绝逼是慢了

Python 和 Java、C#等

  对于使用:Linux原装Python,其余语言没有;以上几门语言都有很是丰富的类库支持
  对于速度:Python在速度上可能稍显逊色

1.速度永远不是关键

对大多数的应用程序来讲,并不须要这么快的运行速度,由于用户根本感受不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间须要0.001秒,而Python程序的运行时间须要0.1秒,慢了100倍,但因为网络更慢,须要等待1秒,你想,用户能感受到1.001秒和1.1秒的区别吗?这就比如F1赛车和普通的出租车在北京三环路上行驶的道理同样,虽然F1赛车理论时速高达400千米,但因为三环路堵车的时速只有20千米,所以,做为乘客,你感受的时速永远是20千米。

2.加密也不是关键

对于编译型语言如C语言来讲,能够将编译后的代码发给用户,用户反解几乎是不可能的,至关于自带加密功能了。而解释型语言如python只能发布源码给用户,但其实这没什么问题,如今主流的思想是软件开源,千万别意淫你的软件有多么大的商业价值。

3.5 Python解释器的种类

python是一门语言,用这门语言写出的代码,须要由python的解释器去解释执行,解释器有以下分类:

  • Cpython(最经常使用的版本)
        Python的官方版本,使用C语言实现,使用最为普遍,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),而后运行在Python虚拟机上。
  • Jyhton
        Python的Java实现,Jython会将Python代码动态编译成Java字节码,而后在JVM上运行。
  • IronPython
        Python的C#实现,IronPython将Python代码编译成C#字节码,而后在CLR上运行。(与Jython相似)
  • PyPy(特殊)
        Python实现的Python,将Python的字节码字节码再编译成机器码。
  • RubyPython、Brython ...

以上除PyPy以外,其余的Python的对应关系和执行流程以下:

 PyPy,在Python的基础上对Python的字节码进一步处理,从而提高执行速度!

 

3.6 python解释器的发展史

  • 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他但愿这个新的叫作Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
  • 1991年,第一个Python编译器诞生。它是用C语言实现的,并可以调用C语言的库文件。从一出生,Python已经具备了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
  • Granddaddy of Python web frameworks, Zope 1 was released in 1999
  • Python 1.0 - January 1994 增长了 lambdamapfilter and reduce.
  • Python 2.0 - October 16, 2000,加入了内存回收机制,构成了如今Python语言框架的基础
  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生
  • Python 2.5 - September 19, 2006
  • Python 2.6 - October 1, 2008
  • Python 2.7 - July 3, 2010
  • In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
  • Python 3.0 - December 3, 2008
  • Python 3.1 - June 27, 2009
  • Python 3.2 - February 20, 2011
  • Python 3.3 - September 29, 2012
  • Python 3.4 - March 16, 2014
  • Python 3.5 - September 13, 2015

四 python环境

注意:环境变量的设置

windows:

1
2
3
4
5
6
7
1 、下载安装包
     https: / / www.python.org / downloads /
2 、安装
     默认安装路径:C:\python27
3 、配置环境变量
     【右键计算机】 - - 》【属性】 - - 》【高级系统设置】 - - 》【高级】 - - 》【环境变量】 - - 》【在第二个内容框中找到 变量名为Path 的一行,双击】  - - > 【Python安装目录以及安装目录下的Scripts目录追加到变值值中,用 ; 分割】
     如:原来的值;C:\python27,切记前面有分号

linux:

1
2
3
无需安装,原装Python环境
  
ps:若是自带 2.6 ,请更新至 2.7

更新Python

windows:

1
卸载重装便可

linux:

Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看默认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  - / usr / local / bin / python2. 7  / usr / bin / python
7 、防止yum执行异常,修改yum使用的Python版本
     vi  / usr / bin / yum
     将头部  #!/usr/bin/python 修改成 #!/usr/bin/python2.6

五 python入门

5.1 第一句python代码

1. 解释器:即时调试代码,代码没法永久保存

2. 文件:永久保存代码


在D:\python_test\目录下新建文件hello.py,编写代码以下

print('hello world')

执行hello.py,即python D:\python_test\hello.py

python内部执行过程以下:

 

上一步中执行python D:\python_test\hello.py时,明确的指出 hello.py 脚本由 python 解释器来执行。

在linux平台中若是想要相似于执行shell脚本同样执行python脚本,例: ./hello.py ,那么就须要在 hello.py 文件的头部指定解释器,以下:

#!/usr/bin/env python #该行只对linux有效

print('hello world')

 

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

5.2 文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*-

5.3 注释

当行注视:# 被注释内容

多行注释:""" 被注释内容 """

5.4 执行脚本传入参数

Python有大量的模块,从而使得开发Python程序很是简洁。类库有包括三中:

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员本身开发的模块

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

1
2
3
4
5
6
#!/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']

 

5.5 了解pyc文件

执行Python代码时,若是导入了其余的 .py 文件,那么,执行过程当中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译以后产生的字节码。

ps:代码通过编译能够产生字节码;字节码经过反编译也能够获得代码。

六 变量

6.1 为什么要有变量

程序执行的本质就是一系列状态的变化,变量二字的核心一个是变,一个是量,'变'正好对应程序的变化,'量'即计量,反映的是某种状态,

好比一款游戏中的人物初始等级:level=1,过了一段时间后升级了:level=10

6.2 变量的声明与引用

#!/usr/bin/env python

name='egon' #变量的声明
name #经过变量名,引用变量的值
print(name) #引用而且打印变量名name对应的值,即'egon'

6.3 标识符命令规范:

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 如下关键字不能声明为变量名
      ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
回到顶部

6.4 变量的赋值

#!/usr/bin/env python

name1='lhf'
name2='egon'

#!/usr/bin/env python

name1='lhf'
name2=name1

 

 

 

复制代码
#!/usr/bin/env python

#一个游戏人物的等级由1级升到2级
level=1
level=2

#一个游戏账号的密码由'123'改为'456'
passwd='123'
passwd='456'

#一我的的名字有'lhf'改为'egon'
name='lhf'
name='egon'
复制代码
回到顶部

七 输入输出

python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input

1.res=input("python3: ")

2.res=raw_input("python2: ")

3.res=raw_input("python2: ")

1,2不管接收何种输入,都被存为字符串赋值给res,而3的意思是,用户输入何种类型,就以何种类型赋值给res

#!/usr/bin/env python

name=input('请输入用户名:')
print(name)

执行

C:\Users\Administrator>python D:\python_test\hello.py
请输入用户名:egon
egon

===============================================================================

输入密码时,若是想要不可见,须要利用getpass 模块中的 getpass方法,即:

#!/usr/bin/env python

import getpass
password=getpass.getpass('请输入密码:')
print(password)

执行(在pycharm中没法执行,须要到终端中执行)

C:\Users\Administrator>python D:\python_test\hello.py
请输入密码:
123456
回到顶部

八 简单的运算符

算数运算;逻辑运算;比较运算;关系运算;

回到顶部

九 流程控制

回到顶部

9.1 条件语句

1 单分支

2 多分支

需求1、用户登录验证

复制代码
#!/usr/bin/env python

name=input('请输入用户名字:')
password=input('请输入密码:')

if name == 'egon' and password == '123':
    print('egon login success')
else:
    print('用户名或密码错误')
复制代码

 

需求2、根据用户输入内容输出其权限

复制代码
#!/usr/bin/env python
#根据用户输入内容打印其权限

'''
egon --> 超级管理员
tom  --> 普通管理员
jack,rain --> 业务主管
其余 --> 普通用户
'''
name=input('请输入用户名字:')

if name == 'egon':
    print('超级管理员')
elif name == 'tom':
    print('普通管理员')
elif name == 'jack' or name == 'rain':
    print('业务主管')
else:
    print('普通用户')
复制代码
回到顶部

9.2 循环语句

while 循环

一、基本循环

while 条件:
     
    # 循环体
 
    # 若是条件为真,那么循环体则执行
    # 若是条件为假,那么循环体不执行

 

 

 

二、break

break用于退出本层循环

while True:
    print "123"
    break
    print "456"

三、continue

continue用于退出本次循环,继续下一次循环

while True:
    print "123"
    continue
    print "456"

 

4 tag

#!/usr/bin/env python
#_*_coding:utf-8_*_

# while True:
# username=input('username: ')
# password=input('password: ')
# if username == 'egon' and password == '123':
# while True:
# cmd=input('>>: ')
# if cmd == 'q':
# break
# print('------>%s' %cmd)
# break
tag=True
while tag:
username=input('username: ')
password=input('password: ')
if username == 'egon' and password == '123':
while tag:
cmd=input('>>: ')
if cmd == 'q':
tag=False
continue
print('------>%s' %cmd)

for循环

for i in range(1,10):
    for j in range(1,i+1):
        print('%s*%s=%s' %(i,j,i*j),end=' ')
    print()

十 本节练习

一、使用while循环输出1 2 3 4 5 6     8 9 10

二、求1-100的全部数的和

三、输出 1-100 内的全部奇数

四、输出 1-100 内的全部偶数

五、求1-2+3-4+5 ... 99的全部数的和

六、用户登录(三次机会重试)

#题一
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 <= 5:
if count%2 == 0:
res-=count
else:
res+=count
count+=1
print(res)

#题目六count=0while count < 3: name=input('请输入用户名:') password=input('请输入密码:') if name == 'egon' and password == '123': print('login success') break else: print('用户名或者密码错误') count+=1

相关文章
相关标签/搜索