Python简介
Python的历史
1.1989年圣诞节:Guidao von Rossum开始写Python语言的编译器
2.1991年2月:第一个Python编译器(同时也是解释器)诞生,他是使用C语言实现的(后续又出现了Java和C# 实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现)。可以调用C语言地库函数。在最早的版本里,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础地拓展系统。
3.1994年1月:Python1.0正式发布。
4.2000年10月16日:Python2.0发布,增加了实现完整的垃圾回收,提供好了对Unicode地支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。
5.2008年12月3日:Python3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python2.x版本,所以Python3.x的很多新特性后来也被移植到Python2.6/2.7版本中。
Python的优缺点
1.简单明确
2.学习曲线低,跟其它语言相比更容易上手
3.开放源代码,拥有强大的社区和生态圈
4.解释型语言,天生具有可移植性
5.支持两种主流的编程范式(面向对象编程和函数式编程)
6.可扩展性和可嵌入式,可以调用C/C++代码,也可以在C/C++中调用Python
7.代码的规范度高,可读性强,适合有代码洁癖和强迫症的人群
缺点包括:
1.执行效率低,因此计算密集型任务可以由C/C++编写
2.代码无法加密
3.在开发时可以选择的框架太多(web框架有100多个),有选择地地方的错误
Python的应用领域
目前的Python应用于云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。
安装Python3.7
1.在官网上下载Python3.7,根据自身需要,按步骤安装即可。
安装后可以从终端运行Python程序,python --version查看Python的版本,如下图:
也可以先输入python进入交互式界面1,在执行一下代码检查python的版本。
其他工具介绍
IDLE-自带的集成开发工具
IDLE是安装python环境时自带的集成开发工具,如下图所示:
IPython - 更好的交互式编程工具
IPython是一种基于Python的交互式解释器。相较于原生的Python Shell,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython和Jupyter,具体的操作如下所示。
pip install ipython jupyter
或者
python -m pip install ipython jupyter
安装成功后,可以通过下面的ipython命令启动IPython。当然我们也可以通过Jupyter运行名为notebook的项目在浏览器窗口中进行交互式操作。
jupyter notebook
Sublime - 文本编辑神器
-
首先可以通过官方网站下载安装程序安装Sublime 3或Sublime 2。
-
安装包管理工具。通过快捷键Ctrl+`或者在View菜单中选择Show Console打开控制台,输入下面的代码。
import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
-
Sublime 2
import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read());print('Please restart Sublime Text to finish installation')
-
-
安装插件。通过Preference菜单的Package Control或快捷键Ctrl+Shift+P打开命令面板,在面板中输入Install Package就可以找到安装插件的工具,然后再查找需要的插件。我们推荐大家安装以下几个插件:
-
SublimeCodeIntel - 代码自动补全工具插件。
-
Emmet - 前端开发代码模板插件。
-
Git - 版本控制工具插件。
-
Python PEP8 Autoformat - PEP8规范自动格式化插件。
-
ConvertToUTF8 - 将本地编码转换为UTF-8。
-
PyCharm - Python开发神器
在本次学习中使用的是Anacond,里面包括jupyter。
练习
1.编写打印出“hello world”
print('hello world')
Python的变量类型
-
整型:Python中可以处理任意大小的整数(Python 2.x中有int和long两种类型的整数,但这种区分对Python来说意义不大,因此在Python 3.x中整数只有int这一种了),而且支持二进制(如
0b100
,换算成十进制是4)、八进制(如0o100
,换算成十进制是64)、十进制(100
)和十六进制(0x100
,换算成十进制是256)的表示法。 -
浮点型:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如
123.456
)之外还支持科学计数法(如1.23456e2
)。 -
字符串型:字符串是以单引号或双引号括起来的任意文本,比如
'hello'
和"hello"
,字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。 -
布尔型:布尔值只有
True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5
会产生布尔值True
,而2 == 1
会产生布尔值False
)。 -
复数型:形如
3+5j
,跟数学上的复数表示一样,唯一不同的是虚部的i
换成了j
。
变量的命名
对于每个变量我们需要给它取一个名字,就如同我们每个人都有属于自己的响亮的名字一样。在Python中,变量命名需要遵循以下这些必须遵守硬性规则和强烈建议遵守的非硬性规则。
-
硬性规则:
-
-
大小写敏感(大写的
a
和小写的A
是两个不同的变量)。 -
不要跟关键字(有特殊含义的单词,后面会讲到)和系统保留字(如函数、模块等的名字)冲突。
-
-
PEP 8要求:
-
用小写字母拼写,多个单词用下划线连接。
-
受保护的实例属性用单个下划线开头(后面会讲到)。
-
私有的实例属性用两个下划线开头(后面会讲到)。
-
变量的使用
-
-
float():将一个字符串转换成浮点数。
-
str():将指定的对象转换成字符串形式,可以指定编码。
-
chr():将整数转换成该编码对应的字符串(一个字符)。
-
ord():将字符串(一个字符)转换成对应的编码(整数)。
下面通过一些例子来说明变量的使用。
1.使用变量保存数据并进行算术运算,如下图所示:
2.使用input()函数进行输入,因为input()输入的是字符串,若要进行运算,则需要类型转换,如下图所示
3.可以使用type()来查看变量的类型,如下图所示:
4.格式化输出%d,{},如下图所示:
5.使用str(),如下图所示:
6.使用chr(),ord()加密邮箱地址,如下图所示:
7.编写计算器
运算符
Python中是支持多种运算符的,如下图所示,根据优先级从高到底的顺序列出所有的运算符。
注:[],[:]是一个前闭后开的一个区间;is是判断的内存地址;除0以外的数都表示True;in是判断某一个字符串是否在这个字符串中,如下图所示:
练习题
1.将华氏摄氏度转换成摄氏温度 F = 1.8C + 32
F = input('请输入华氏温度:')
C = (float(F)-32)*1.0/1.8
print('{:.2f} 摄氏度 = {} 华氏度'.format(C,F))
运行结果:
2.输入圆的半径计算圆的面积和周长
import math
r = float(input('请输入圆的半径:'))
area = r ** 2 * math.pi
per = 2 * r * math.pi
print('半径为%f,面积为%f,周长为%f'% (r,area,per))
运行结果:
3.判断输入的年份是否为闰年
year = int(input('请输入年份:'))
if (year % 4 == 0 )and (year % 100 != 0 )or(year % 400 == 0):
print('闰年')
else:
print('平年')
运行结果:
4.判断是否为水仙花数
第一种:
num = input("请输入一个三位数:")
if len(num) > 3:
print('输入有误')
else:
num_1=int(num)
a = int(num_1 % 100)
b = a % 10 # 百位数
c = int(a / 10) # 十位数
d = int(num_1 / 100) # 个位数
if (d ** 3)+(c ** 3)+(b ** 3) == num_1:
print('水仙花数')
else:
print('不是水仙花数')
运行结果:
第二种:
num = input("请输入一个三位数:")
if len(num) > 3:
print('输入有误')
else:
b = int(num[0]) # 百位数
c = int(num[1]) # 十位数
d = int(num[2]) # 个位数
if (d ** 3)+(c ** 3)+(b ** 3) == int(num):
print('水仙花数')
else:
print('不是水仙花数')
运行结果:
5.实现一个正方形
for i in range(10):
print('* ',end='')
print()
for k in range(8):
print('* ',' '*14,'*',sep=" ")
for j in range(10):
print('* ',end='')
运行结果:
-