什么是Python
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。
像Perl语言一样, Python 源代码同样遵循 GPL(GNU General PublicLicense)协议。
为什么使用Python做数据科学
许许多多的人(包括我自己)都很容易爱上Python这门语言。自从1991年诞生以来,Python现在已经成为最受欢迎的动态编程语言之一,其他还有Perl、Ruby等。由于拥有大量的Web框架(比如Rails(Ruby)和Django(Python)),最近几年非常流行使用Python和Ruby进行网站建设工作。这些语言常被称作脚本(scripting)语言,因为它们可以用于编写简短而粗糙的小程序(也就是脚本)。我个人并不喜欢“脚本语言”这个术语,因为它好像在说这些语言无法用于构建严谨的软件。在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算(scientificcomputing)社区。进入21世纪以来,在行业应用和学术研究中采用Python进行科学计算的势头越来越猛。
在数据分析和交互、探索性计算以及数据可视化等方面,Python将不可避免地接近于其他开源和商业的领域特定编程语言/工具,如R、MATLAB、SAS、Stata等。近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大替代方案。结合其在通用编程方面的强大实力,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。
python环境搭建
这里只针对科学计算和数据相关业务环境尽可能简单快速地搭建环境。
Anaconda概述
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。
进入下文之前,说明一下conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。
Anaconda的安装
Anaconda的下载页参见官网下载,Linux、Mac、Windows均支持。
Anaconda镜像使用帮助
Anaconda安装包可以到https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载。
TUNA还提供了 Anaconda 仓库的镜像,运行以下命令:
conda config --add channelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --setshow_channel_urls yes
即可添加 Anaconda Python 免费仓库。
运行condainstall numpy测试一下吧。
Anaconda内置的数学工具
使用Python 交互模式
命令行
lcmd
Hello world
IPython
是一个交互式计算系统。主要包含三个组件:增加的交互式 “Python shell”,解耦的双过程通信模型,交互式并行计算的架构。支持变量自动补全。
ljupyter
Jupyter
Jupyter Notebook(此前被称为 IPythonnotebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdown。用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。
IPython3.x版本是IPython释放的最后版本了。现在由于IPython新增特性的增加,IPython 4.0及以后版本归于项目Jupyter。IPython作为Jupyter的内核存在。也就是说,现在我们需要安装的就是Jupyter。
Python | IPython/Jupyter搭建最佳交互环境
方法/步骤
1.我们使用pip来安装Jupyter。输入安装命令pipinstall jupyter即可,大约需要几十秒钟就可以完成安装。
2.Python |如何用pip安装模块和包
Python | IPython/Jupyter搭建最佳交互环境
3.安装完成后,我们可在如下目录找到jupyter-notebook这个应用
Python | IPython/Jupyter搭建最佳交互环境
4.双击打开。这时候会弹出浏览器窗口和notebook窗口。
Python | IPython/Jupyter搭建最佳交互环境
5.点击右边的新建按钮,选择Python版本,就可以新建一个脚本环境了。
Python |IPython/Jupyter搭建最佳交互环境
6.输入代码,点击运行就可以执行代码并看到运行结果。
ython |IPython/Jupyter搭建最佳交互环境
7.运行的脚本状态可以在主界面查看。脚本文件存在本地位置。
Python | IPython/Jupyter搭建最佳交互环境
Python | IPython/Jupyter搭建最佳交互环境
使用IDE
集成开发环境(IDE,IntegratedDevelopment Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
vim
文本编辑器
spyder
Spyder是Python(x,y)的作者为它开发的一个简单的集成开发环境。和其他的Python开发环境相比,它最大的优点就是模仿MATLAB的“工作空间”的功能,可以很方便地观察和修改数组的值。
Spyder的界面由许多窗格构成,用户可以根据自己的喜好调整它们的位置和大小。当多个窗格出现在一个区域时,将使用标签页的形式显示。例如在图1中,可以看到“Editor”、“Objectinspector”、“Variable explorer”、“Fileexplorer”、“Console”、“Historylog”以及两个显示图像的窗格。在View菜单中可以设置是否显示这些窗格。
语法基础
第一个Python3.x程序
对于大多数程序语言,第一个入门编程代码便是"HelloWorld!",以下代码为使用Python输出"Hello World!":
实例(Python 3.0+)
#!/usr/bin/python3print("Hello, World!");
你可以将以上代码保存在hello.py文件中并使用python命令执行该脚本文件。
$ python3hello.py
以上命令输出结果为:
Hello,World!
python保留字
保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
>>>importkeyword
>>>keyword.kwlist['False','None','True','and','as','assert','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']
注释
Python中单行注释以#开头,实例如下:
#!/usr/bin/python3#第一个注释
print("Hello,Python!")#第二个注释
执行以上代码,输出结果为:
Hello,Python!
多行注释可以用多个 # 号:
#!/usr/bin/python3#第一个注释# 第二个注释
print("Hello,Python!")
执行以上代码,输出结果为:
Hello,Python!
行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号({})。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
ifTrue:
print("True")
else:
print("False")
以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
ifTrue:
print("Answer")
print("True")
else:
print("Answer")
print("False")#缩进不一致,会导致运行错误
以上程序由于缩进不一致,执行后会出现类似以下错误:
File"test.py",line6print("False")#缩进不一致,会导致运行错误^IndentationError:unindent doesnotmatch any outer indentation level
数据类型
python中数有四种类型:整数、长整数、浮点数和复数。
l整数, 如 1
l长整数 是比较大的整数
l浮点数 如 1.23、3E-2
l复数 如 1 + 2j、 1.1 + 2.2j
字符串
lpython中单引号和双引号使用完全相同。
l使用三引号('''或""")可以指定一个多行字符串。
l转义符 '\'
l自然字符串, 通过在字符串前加r或R。 如 r"thisis a line with \n" 则\n会显示,并不是换行。
lpython允许处理unicode字符串,加前缀u或U,如 u"this is an unicode string"。
l字符串是不可变的。
l按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
word='字符串'
sentence="这是一个句子。"
paragraph="""这是一个段落, 可以由多行组成"""
空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
Python3基本数据类型
Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
实例(Python 3.0+)
#!/usr/bin/python3
counter=100#整型变量
miles=1000.0#浮点型变量
name="runoob"#字符串
print(counter)
print(miles)
print(name)
执行以上程序会输出如下结果:
1001000.0runoob
多个变量赋值
Python允许你同时为多个变量赋值。例如:
a=b=c=1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
您也可以为多个对象指定多个变量。例如:
a,b,c=1,2,"runoob"
以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。
标准数据类型
Python3中有六个标准的数据类型:
lNumber(数字)
lString(字符串)
lList(列表)
lTuple(元组)
lSets(集合)
lDictionary(字典)
Number(数字)
Python3支持int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。
>>>a,b,c,d=20,5.5,True,4+3j
>>>print(type(a),type(b),type(c),type(d))
此外还可以用 isinstance 来判断:
实例
>>>isinstance(a,int)True
isinstance和 type 的区别在于:
classA:
pass
classB(A):
pass
isinstance(A(),A)# returns True
type(A())==A# returns True
isinstance(B(),A)# returns True
type(B())==A# returns False
区别就是:
ltype()不会认为子类是一种父类类型。
lisinstance()会认为子类是一种父类类型。
注意:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
当你指定一个值时,Number 对象就会被创建:
var1=1var2=10
您也可以使用del语句删除一些对象引用。
del语句的语法是:
delvar1[,var2[,var3[....,varN]]]]
您可以通过使用del语句删除单个或多个对象。例如:
delvardelvar_a,var_b
数值运算
实例
>>>5+4#加法9
>>>4.3-2#减法2.3
>>>3*7#乘法21
>>>2/4#除法,得到一个浮点数0.5
>>>2//4#除法,得到一个整数
>>>17%3#取余2
>>>2**5#乘方32
注意:
l1、Python可以同时为多个变量赋值,如a, b = 1, 2。
l2、一个变量可以通过赋值指向不同类型的对象。
l3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
l4、在混合计算时,Python会把整型转换成为浮点数。
数值类型实例
Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
String(字符串)
Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠(\)转义特殊字符。
字符串的截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 (+) 是字符串的连接符,星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。实例如下:
实例
#!/usr/bin/python3
str='Runoob'print(str)#输出字符串
print(str[:-1])#输出第一个到倒数第二个的所有字符
print(str[])#输出字符串第一个字符
print(str[2:5])#输出从第三个开始到第五个的字符
print(str[2:])#输出从第三个开始的后的所有字符
print(str*2)#输出字符串两次
print(str+"TEST")#连接字符串
执行以上程序会输出如下结果:
RunoobRunooR noo noobRunoobRunoobRunoobTEST
Python使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
>>>print('Ru\noob')
Ruoob
>>>print(r'Ru\noob')
Ru\noob
另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用"""..."""或者'''...'''跨越多行。
注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。
实例
>>>word='Python'
>>>print(word[],word[5])
Pn
>>>print(word[-1],word[-6])
nP
与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
注意:
l1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
l2、字符串可以用+运算符连接在一起,用*运算符重复。
l3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
l4、Python中的字符串不能改变。
List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号([])之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号(+)是列表连接运算符,星号(*)是重复操作。如下实例:
实例
#!/usr/bin/python3
list=['abcd',786,2.23,'runoob',70.2]
tinylist=[123,'runoob']
print(list)#输出完整列表
print(list[])#输出列表第一个元素
print(list[1:3])#从第二个开始输出到第三个元素
print(list[2:])#输出从第三个元素开始的所有元素
print(tinylist*2)#输出两次列表
print(list+tinylist)#连接列表
以上实例输出结果:
['abcd',786,2.23,'runoob',70.2]abcd[786,2.23][2.23,'runoob',70.2][123,'runoob',123,'runoob']['abcd',786,2.23,'runoob',70.2,123,'runoob']
与Python字符串不一样的是,列表中的元素是可以改变的:
实例
>>>a=[1,2,3,4,5,6]
>>>a[2:5]=[13,14,15]
>>>a[9,2,13,14,15,6]
>>>a[2:5]=[]#删除
>>>a[9,2,6]
List内置了有很多方法,例如append()、pop()等等,这在后面会讲到。
注意:
l1、List写在方括号之间,元素用逗号隔开。
l2、和字符串一样,list可以被索引和切片。
l3、List可以使用+操作符进行拼接。
l4、List中的元素是可以改变的。
Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。
元组中的元素类型也可以不相同:
实例
#!/usr/bin/python3
tuple=('abcd',786,2.23,'runoob',70.2)
tinytuple=(123,'runoob')
print(tuple)#输出完整元组
print(tuple[])#输出元组的第一个元素
print(tuple[1:3])#输出从第二个元素开始到第三个元素
print(tuple[2:])#输出从第三个元素开始的所有元素
print(tinytuple*2)#输出两次元组
print(tuple+tinytuple)#连接元组
以上实例输出结果:
('abcd',786,2.23,'runoob',70.2)abcd(786,2.23)(2.23,'runoob',70.2)(123,'runoob',123,'runoob')('abcd',786,2.23,'runoob',70.2,123,'runoob')
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。
其实,可以把字符串看作一种特殊的元组。
实例
>>>tup=(1,2,3,4,5,6)
>>>print(tup[])
1
>>>print(tup[1:5])
(2,3,4,5)
>>>tup[]=11#修改元组元素的操作是非法的
Traceback(mostrecentcalllast):File"",line1,inTypeError:'tuple'objectdoesnotsupportitemassignment>>>
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1=()#空元组tup2=(20,)#一个元素,需要在元素后添加逗号
string、list和tuple都属于sequence(序列)。
注意:
l1、与字符串一样,元组的元素不能修改。
l2、元组也可以被索引和切片,方法一样。
l3、注意构造包含0或1个元素的元组的特殊语法规则。
l4、元组也可以使用+操作符进行拼接。
Set(集合)
集合(set)是一个无序不重复元素的序列。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。
实例
#!/usr/bin/python3
student= {'Tom','Jim','Mary','Tom','Jack','Rose'}
print(student)#输出集合,重复的元素被自动去掉# 成员测试
if('Rose'instudent):
print('Rose在集合中')
else:
print('Rose不在集合中')# set可以进行集合运算
a=set('abracadabra')
b=set('alacazam')
print(a)
print(a-b)# a和b的差集
print(a|b)# a和b的并集
print(a&b)# a和b的交集
print(a^b)# a和b中不同时存在的元素
以上实例输出结果:
{'Mary','Jim','Rose','Jack','Tom'}Rose在集合中{'b','a','c','r','d'}{'b','d','r'}{'l','r','a','c','z','m','b','d'}{'a','c'}{'l','r','z','m','b','d'}
Dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{}"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
实例
#!/usr/bin/python3
dict= {}
dict['one']="1 -菜鸟教程"
dict[2]="2 -菜鸟工具"
print(dict['one'])#输出键为'one' 的值
print(dict[2])#输出键为 2 的值
print(tinydict)#输出完整的字典
print(tinydict.keys())#输出所有键
print(tinydict.values())#输出所有值
以上实例输出结果:
构造函数 dict() 可以直接从键值对序列中构建字典如下:
实例
>>>dict([('Runoob',1),('Google',2),('Taobao',3)])
{'Taobao':3,'Runoob':1,'Google':2}
>>> {x:x**2forxin(2,4,6)}
{2:4,4:16,6:36}
>>>dict(Runoob=1,Google=2,Taobao=3)
{'Taobao':3,'Runoob':1,'Google':2}
另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。
注意:
l1、字典是一种映射类型,它的元素是键值对。
l2、字典的关键字必须为不可变类型,且不能重复。
l3、创建空字典使用{ }。
Python数据类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
条件控制
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
if-condition.jpg
if语句
Python中if语句的一般形式如下所示:
ifcondition_1:
statement_block_1
elifcondition_2:
statement_block_2
else:
statement_block_3
l如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句
l如果 "condition_1" 为False,将判断 "condition_2"
l如果"condition_2" 为 True 将执行 "statement_block_2" 块语句
l如果 "condition_2" 为False,将执行"statement_block_3"块语句
Python中用elif代替了else if,所以if语句的关键字为:if – elif – else。
注意:
l1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
l2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
l3、在Python中没有switch – case语句。
实例
以下是一个简单的 if 实例:
实例
#!/usr/bin/python3
var1=100
ifvar1
:print("1 - if表达式条件为 true")
print(var1)var2=ifvar2:
print("2 - if表达式条件为true")
print(var2)
print("Good bye!")
执行以上代码,输出结果为:
1- if表达式条件为 true 100 Good bye!
从结果可以看到由于变量 var2 为0,所以对应的 if 内的语句没有执行。
以下实例演示了狗的年龄计算判断:
实例
#!/usr/bin/python3
age=int(input("请输入你家狗狗的年龄:"))
print("")
print("你是在逗我吧!")
elifage==1:
print("相当于 14 岁的人。")
elifage==2:
print("相当于 22 岁的人。")
elifage>2:
human=22+(age-2)*5
print("对应人类年龄:",human)###退出提示
input("点击 enter 键退出")
将以上脚本保存在dog.py文件中,并执行该脚本:
$python3 dog.py请输入你家狗狗的年龄: 1 相当于 14 岁的人。 点击 enter 键退出
以下为if中常用的操作运算符:
实例
#!/usr/bin/python3#程序演示了 == 操作符# 使用数字
print(5==6)#使用变量
x=5
y=8
print(x==y)
以上实例输出结果:
FalseFalse
high_low.py文件演示了数字的比较运算:
实例
#!/usr/bin/python3 #该实例演示了数字猜谜游戏
number=7
guess= -1
print("数字猜谜游戏!")
whileguess!=number:
guess=int(input("请输入你猜的数字:"))
ifguess==number:
print("恭喜,你猜对了!")
elifguess
print("猜的数字小了...")
elifguess>number:
print("猜的数字大了...")
执行以上脚本,实例输出结果如下:
$python3 high_low.py数字猜谜游戏! 请输入你猜的数字:1 猜的数字小了...请输入你猜的数字:9 猜的数字大了... 请输入你猜的数字:7 恭喜,你猜对了!
if嵌套
在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。
if表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else: 语句 elif 表达式4: 语句 else: 语句
实例
# !/usr/bin/python3
num=int(input("输入一个数字:"))
ifnum%2==:
ifnum%3==:
print("你输入的数字可以整除 2 和 3")
else:
print("你输入的数字可以整除 2,但不能整除 3")
else:
ifnum%3==:
print("你输入的数字可以整除 3,但不能整除 2")
else:
print("你输入的数字不能整除 2 和 3")
将以上程序保存到 test_if.py 文件中,执行后输出结果为:
$python3 test.py输入一个数字:6 你输入的数字可以整除 2 和 3
循环语句
本章节将为大家介绍Python循环语句的使用。
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:
while_loop_1.png
while循环
Python中while语句的一般形式:
while判断条件: 语句
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
以下实例使用了 while 来计算 1 到 100 的总和:
实例
#!/usr/bin/env python3
n=100
sum=
counter=1
whilecounter
sum=sum+counter
counter+=1
print("1到 %d 之和为: %d"%(n,sum))
执行结果如下:
1到 100 之和为: 5050
无限循环
我们可以通过设置条件表达式永远不为false 来实现无限循环,实例如下:
实例
#!/usr/bin/python3
var=1
whilevar==1:#表达式永远为 true
num=int(input("输入一个数字 :"))
print("你输入的数字是:",num)
print("Good bye!")
执行以上脚本,输出结果如下:
输入一个数字 :5 你输入的数字是: 5 输入一个数字 :
你可以使用CTRL+C来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
while循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
实例
#!/usr/bin/python3
count=
whilecount
:print(count,"小于 5")
count=count+1
else:
print(count,"大于或等于 5")
执行以上脚本,输出结果如下:
小于 51 小于 5 2 小于 5 3 小于 5 4 小于 5 5 大于或等于 5
简单语句组
类似if语句的语法,如果你的while循环体中只有一条语句,你可以将该语句与while写在同一行中, 如下所示:
实例
#!/usr/bin/pythonflag=1while(flag):print('欢迎访问菜鸟教程!')print("Good bye!")
注意:以上的无限循环你可以使用 CTRL+C 来中断循环。
执行以上脚本,输出结果如下:
for语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
forin:
else:
Python loop循环实例:
实例
>>>languages=["C","C++","Perl","Python"]
>>>forxinlanguages:
...print(x)
...CC++PerlPython
以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体:
实例
#!/usr/bin/python3
sites=["Baidu","Google","Runoob","Taobao"]
forsiteinsites:
ifsite=="Runoob":
print("菜鸟教程!")
break
print("循环数据"+site)
else:
print("没有循环数据!")print("完成循环!")
执行脚本后,在循环到"Runoob"时会跳出循环体:
循环数据 Baidu 循环数据 Google 菜鸟教程! 完成循环!
range()函数
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
实例
>>>foriinrange(5):
...print(i)
...01234
你也可以使用range指定区间的值:
实例
>>>foriinrange(5,9):
print(i)
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
实例
>>>foriinrange(,10,3):
print(i)
负数:
实例
>>>foriinrange(-10, -100, -30):print(i)-10-40-70>>>
您可以结合range()和len()函数以遍历一个序列的索引,如下所示:
实例
>>>a=['Google','Baidu','Runoob','Taobao','QQ']>>>foriinrange(len(a)): ...print(i,a[i])...Google1Baidu2Runoob3Taobao4QQ>>>
还可以使用range()函数来创建一个列表:
实例
>>>list(range(5))[,1,2,3,4]>>>
break和continue语句及循环中的else子句
break语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。 实例如下:
实例
#!/usr/bin/python3
forletterin'Runoob':#第一个实例
ifletter=='b':
break
print('当前字母为 :',letter)
var=10#第二个实例
whilevar>:
print('当期变量值为 :',var)
var=var-1
ifvar==5:
break
print("Good bye!")
执行以上脚本输出结果为:
当前字母为 : R 当前字母为 : u 当前字母为: n 当前字母为 : o 当前字母为 : o 当期变量值为 : 10 当期变量值为 : 9 当期变量值为 : 8 当期变量值为 : 7 当期变量值为 : 6 Good bye!
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
实例
#!/usr/bin/python3
forletterin'Runoob':
#第一个实例
ifletter=='o':
#字母为 o 时跳过输出
continue
print('当前字母 :',letter)
var=10#第二个实例
whilevar>:
var=var-1
ifvar==5:#变量为 5 时跳过输出
continue
print('当前变量值 :',var)
print("Good bye!")
执行以上脚本输出结果为:
当前字母 : R 当前字母 : u 当前字母 :n 当前字母 : b 当前变量值 : 9 当前变量值 : 8 当前变量值 : 7 当前变量值: 6 当前变量值 : 4 当前变量值 : 3 当前变量值 : 2 当前变量值 : 1 当前变量值: 0 Good bye!
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。
如下实例用于查询质数的循环例子:
实例
#!/usr/bin/python3
forninrange(2,10):
forxinrange(2,n):
ifn%x==:
print(n,'等于',x,'*',n//x)
break
else:
#循环中没有找到元素
print(n,'是质数')
执行以上脚本输出结果为:
2是质数3 是质数 4 等于 2 * 2 5 是质数 6 等于 2 * 3 7 是质数 8 等于 2 * 4 9 等于 3 * 3
pass语句
Python pass是空语句,是为了保持程序结构的完整性。
pass不做任何事情,一般用做占位语句,如下实例
实例
>>>whileTrue:
...pass#等待键盘中断(Ctrl+C)
最小的类:
实例
>>>classMyEmptyClass:
...pass
以下实例在字母为 o 时 执行 pass 语句块:
实例
#!/usr/bin/python3
forletterin'Runoob':
ifletter=='o':
pass
print('执行 pass 块')
print('当前字母 :',letter)
print("Good bye!")
执行以上脚本输出结果为:
当前字母 : R 当前字母 : u 当前字母 :n 执行 pass 块 当前字母 : o 执行 pass 块 当前字母 : o 当前字母 : b Good bye!
领取专属 10元无门槛券
私享最新 技术干货