首页 后端开发 Python教程 Python入门篇之条件、循环

Python入门篇之条件、循环

Jun 10, 2016 pm 03:19 PM
python 入门 循环 条件

1.if语句

Python 中的if子句看起来十分熟悉. 它由三部分组成: 关键字本身, 用于判断结果真假的条件表达式, 以及当表达式为真或者非零时执行的代码块.
if 语句的语法如下:
if expression:
  expr_true_suite
if 语句的 expr_true_suite代码块只有在条件表达式的结果的布尔值为真时才执行, 否则将继续执行紧跟在该代码块后面的语句.

(1)多重条件表达式

单个if语句可以通过使用布尔操作符and,or和not实现多重判断条件或是否定判断条件.

复制代码 代码如下:

if not warn and (system_load >= 10):
print "WARNING: losing resources"
warn += 1

(2)单一语句的代码块

如果一个复合语句(例如 if 子句, while 或 for 循环)的代码块仅仅包含一行代码, 那么它可以和前面的语句写在同一行上:
if make_hard_copy: send_data_to_printer()

尽管它可能方便, 但这样会使得代码更难阅读, 所以我们推荐将这行代码移到下一行并合理地缩进.

2.else语句

Python提供了与if语句搭配使用的else语句.如果if语句的条件表达式的结果布尔值为假,那么程序将执行else语句后的代码.它的语法你甚至可以猜到:

复制代码 代码如下:

if expression:
  expr_true_suite
else:
  expr_false_suite

if passwd == user.passwd:
    ret_str = "password accepted"
    id = user.id valid = True
else:
    ret_str = "invalid password entered... try again!"
    valid = False

3.elif(即else-if)语句

elif是Python的else-if语句,它检查多个表达式是否为真, 并在为真时执行特定代码块中的代码. 和else一样, elif声明是可选的, 然而不同的是: if语句后最多只能有一个else语句, 但可以有任意数量的elif语句.

复制代码 代码如下:

if expression1:
  expr1_true_suite
elif expression2:
  expr2_true_suite
elif expressionN:
  exprN_true_suite
else:
  none_of_the_above_suite

4.条件表达式(即"三元操作符")

Python 2.5 集成的语法确定为: X if C else Y .

复制代码 代码如下:

>>> x, y = 4, 3
>>> smaller = x if x >>> smaller
3

5.while语句

Python的while是本章我们遇到的第一个循环语句. 事实它上是一个条件循环语句.与if声明相比,如果if后的条件为真, 就会执行一次相应的代码块. 而while中的代码块会一直循环执行, 直到循环条件不再为真.
while 循环的语法如下:

复制代码 代码如下:

while expression:
  suite_to_repeat

>>> x=1
>>> while x     print x
    x+=10

6.for语句

Python提供给我们的另一个循环机制就是for语句. 它提供了Python中最强大的循环结构.它可以遍历序列成员, 可以用在列表解析和生成器表达式中,它会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环(所有这一切都是在内部发生的).和传统语言中的for语句不同, Python的for更像是 shell 或是脚本语言中的foreach循环.

for循环会访问一个可迭代对象(例如序列或是迭代器)中的所有元素, 并在所有条目都处理过后结束循环.它的语法如下:

复制代码 代码如下:

for iter_var in iterable:
  suite_to_repeat

1.用于序列类型

复制代码 代码如下:

>>> for c in 'names':
    print 'current letter: ', c

current letter:  n
current letter:  a
current letter:  m
current letter:  e
current letter:  s

迭代序列有三种基本方法:

1.通过序列项迭代:

复制代码 代码如下:

>>> namelists = ['henry', 'john', 'steven']
>>> for eachName in namelists:
      print eachName, 'Lim'
   
henry Lim
john Lim
steven Lim

2.通过序列索引迭代:

复制代码 代码如下:

>>> namelists = ['henry', 'john', 'steven']
>>> for nameindex in range(len(namelists)):
    print 'Liu, ', namelists[nameindex]

Liu,  henry
Liu,  john
Liu,  steven

3.使用项和索引迭代:

两全其美的办法是使用内建的 enumerate() 函数, 它是 Python 2.3 的新增内容. 代码如下:

复制代码 代码如下:

>>> namelists = ['henry', 'john', 'steven']
>>> for i, eachLee in enumerate(namelists):
    print "%d %s Lee" % (i+1, eachLee)
   
1 henry Lee
2 john Lee
3 steven Lee

2.用于迭代器类型

迭代器对象有一个 next() 方法,调用后返回下一个条目. 所有条目迭代完后, 迭代器引发一个 StopIteration 异常告诉程序循环结束. for 语句在内部调用 next() 并捕获异常.

3.range()内建函数

内建函数 range() 可以把类似 foreach 的 for 循环变成你更加熟悉的语句

Python 提供了两种不同的方法来调用range().完整语法要求提供两个或三个整数参数:
range(start, end, step =1)
range() 会返回一个包含所有k的列表,这里start

复制代码 代码如下:

>>> range(2, 19, 3)
[2, 5, 8, 11, 14, 17]

如果只给定两个参数,而省略step,step就使用默认值1.

复制代码 代码如下:

>>> range(3, 7)
[3, 4, 5, 6]

range() 还有两种简略的语法格式:
range(end)
range(start, end)

4.xrange()内建函数

xrange()类似range(),不过当你有一个很大的范围列表时, xrange()可能更为适合, 因为它不会在内存里创建列表的完整拷贝. 它只被用在for循环中, 在for循环外使用它没有意义。同样地,你可以想到,它的性能远高出range(),因为它不生成整个列表。

5.与序列相关的内建函数

sorted(), reversed(), enumerate(), zip()

sorted() 和 zip() 返回一个序列(列表), 而另外两个函数 reversed() 和 enumerate() 返回迭代器(类似序列)

7.break语句

Python中的 break 语句可以结束当前循环然后跳转到下条语句, 类似 C 中的传统 break.常用在当某个外部条件被触发(一般通过if 语句检查),需要立即从循环中退出时break 语句可以用在 while 和 for 循环中.

8.continue语句

Python里的continue语句和其他高级语言中的传统continue并没有什么不同.它可以被用在while和for循环里.while循环是条件性的, 而for循环是迭代的, 所以continue 在开始下一次循环前要满足一些先决条件,否则循环会正常结束.

复制代码 代码如下:

valid = False
count = 3
while count > 0:
  input = raw_input("enter password")
  # check for valid passwd
  for eachPasswd in passwdList:
    if input == eachPasswd:
      valid = True
      break
    if not valid: # (or valid == 0)
      print "invalid input"
      count -= 1
      continue
    else:
      break

这里例子结合使用了 while , for , if , break以及 continue ,用来验证用户输入. 用户有三次机会来输入正确的密码, 如果失败, 那么 valid变量将仍为一个布尔假(0 ), 然后我们可以采取必要的操作阻止用户猜测密码.

9.pass语句

Python提供了pass语句,它不做任何事情 - 即NOP,(No OPeration ,无操作)我们从汇编语言中借用这个概念.pass同样也可作为开发中的小技巧,标记你后来要完成的代码,例如这样:

复制代码 代码如下:

def foo_func():
    pass
#或是
if user_choice == 'do_calc':
    pass else:
    pass

这样的代码结构在开发和调试时很有用, 因为编写代码的时候你可能要先把结构定下来,但你不希望它干扰其他已经完成的代码. 在不需要它做任何事情地方, 放一个pass 将是一个很好的主意.

10.迭代器和iter()函数

迭代器就是有一个 next() 方法的对象, 而不是通过索引来计数. 当你或是一个循环机制(例如 for 语句)需要下一个项时, 调用迭代器的 next()方法就可以获得它.条目全部取出后, 会引发一个 StopIteration 异常, 这并不表示错误发生, 只是告诉外部调用者, 迭代完成.

限制:不能向后移动, 不能回到开始, 也不能复制一个迭代器.

reversed() 内建函数将返回一个反序访问的迭代器. enumerate() 内建函数同样也返回迭代器. 另外两个新的内建函数,any()和all()

Python 还提供了一整个itertools模块,它包含各种有用的迭代器.

复制代码 代码如下:

>>> tupe=(12,'2',45.45)
>>> i = iter(tupe)
>>> i.next()
12
>>> i.next()
'2'
>>> i.next()
45.45
>>> i.next()
Traceback (most recent call last):
  File "", line 1, in
    i.next()
StopIteration

创建迭代器

对一个对象调用 iter() 就可以得到它的迭代器. 它的语法如下:
iter(obj)
iter(func, sentinel )
如果你传递一个参数给iter(),它会检查你传递的是不是一个序列,如果是,那么很简单:根据索引从0一直迭代到序列结束. 另一个创建迭代器的方法是使用类, 一个实现了__iter__()和next()方法的类可以作为迭代器使用.

如果是传递两个参数给iter(),它会重复地调用 func ,直到迭代器的下个值等于sentinel .

11.将某件事作为另一事件导入

从模块导入函数的时候,可以使用

复制代码 代码如下:

import somemodule

或者

复制代码 代码如下:

from somemodule import somefunction

或者
复制代码 代码如下:

from somemodule import somefunction, anotherfunction, yetanotherfunction

或者
复制代码 代码如下:

from somemodule import *

如果两个模块都有open函数,只需要使用第一种方式导入,然后像下面这样使用函数:
复制代码 代码如下:

module1.open(...)

module2.open(...)

或者:可以在语句末尾增加一个as子句,在该子句后给出名字,或为整个模块提供别名:

复制代码 代码如下:

>>> import math as foobar
>>> foobar.sqrt(4)
2.0
>>> #也可以为函数提供别名;
>>> from math import sqrt as foobar
>>> foobar(4)
2.0

这里所做的事情叫做序列解包--将多个值的序列解开,然后放到变量的序列中,更加形象一点的表达出来就是:

复制代码 代码如下:

>>> values=1,2,3
>>> values
(1, 2, 3)
>>> x,y,z=values
>>> x
1
>>> y
2
>>> z
3
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mysql 是否要付费 mysql 是否要付费 Apr 08, 2025 pm 05:36 PM

MySQL 有免费的社区版和收费的企业版。社区版可免费使用和修改,但支持有限,适合稳定性要求不高、技术能力强的应用。企业版提供全面商业支持,适合需要稳定可靠、高性能数据库且愿意为支持买单的应用。选择版本时考虑的因素包括应用关键性、预算和技术技能。没有完美的选项,只有最合适的方案,需根据具体情况谨慎选择。

mysql安装后怎么使用 mysql安装后怎么使用 Apr 08, 2025 am 11:48 AM

文章介绍了MySQL数据库的上手操作。首先,需安装MySQL客户端,如MySQLWorkbench或命令行客户端。1.使用mysql-uroot-p命令连接服务器,并使用root账户密码登录;2.使用CREATEDATABASE创建数据库,USE选择数据库;3.使用CREATETABLE创建表,定义字段及数据类型;4.使用INSERTINTO插入数据,SELECT查询数据,UPDATE更新数据,DELETE删除数据。熟练掌握这些步骤,并学习处理常见问题和优化数据库性能,才能高效使用MySQL。

mySQL下载完安装不了 mySQL下载完安装不了 Apr 08, 2025 am 11:24 AM

MySQL安装失败的原因主要有:1.权限问题,需以管理员身份运行或使用sudo命令;2.依赖项缺失,需安装相关开发包;3.端口冲突,需关闭占用3306端口的程序或修改配置文件;4.安装包损坏,需重新下载并验证完整性;5.环境变量配置错误,需根据操作系统正确配置环境变量。解决这些问题,仔细检查每个步骤,就能顺利安装MySQL。

mysql下载文件损坏无法安装的修复方案 mysql下载文件损坏无法安装的修复方案 Apr 08, 2025 am 11:21 AM

MySQL下载文件损坏,咋整?哎,下载个MySQL都能遇到文件损坏,这年头真是不容易啊!这篇文章就来聊聊怎么解决这个问题,让大家少走弯路。读完之后,你不仅能修复损坏的MySQL安装包,还能对下载和安装过程有更深入的理解,避免以后再踩坑。先说说为啥下载文件会损坏这原因可多了去了,网络问题是罪魁祸首,下载过程中断、网络不稳定都可能导致文件损坏。还有就是下载源本身的问题,服务器文件本身就坏了,你下载下来当然也是坏的。另外,一些杀毒软件过度“热情”的扫描也可能造成文件损坏。诊断问题:确定文件是否真的损坏

如何针对高负载应用程序优化 MySQL 性能? 如何针对高负载应用程序优化 MySQL 性能? Apr 08, 2025 pm 06:03 PM

MySQL数据库性能优化指南在资源密集型应用中,MySQL数据库扮演着至关重要的角色,负责管理海量事务。然而,随着应用规模的扩大,数据库性能瓶颈往往成为制约因素。本文将探讨一系列行之有效的MySQL性能优化策略,确保您的应用在高负载下依然保持高效响应。我们将结合实际案例,深入讲解索引、查询优化、数据库设计以及缓存等关键技术。1.数据库架构设计优化合理的数据库架构是MySQL性能优化的基石。以下是一些核心原则:选择合适的数据类型选择最小的、符合需求的数据类型,既能节省存储空间,又能提升数据处理速度

mysql安装后怎么优化数据库性能 mysql安装后怎么优化数据库性能 Apr 08, 2025 am 11:36 AM

MySQL性能优化需从安装配置、索引及查询优化、监控与调优三个方面入手。1.安装后需根据服务器配置调整my.cnf文件,例如innodb_buffer_pool_size参数,并关闭query_cache_size;2.创建合适的索引,避免索引过多,并优化查询语句,例如使用EXPLAIN命令分析执行计划;3.利用MySQL自带监控工具(SHOWPROCESSLIST,SHOWSTATUS)监控数据库运行状况,定期备份和整理数据库。通过这些步骤,持续优化,才能提升MySQL数据库性能。

mysql 需要互联网吗 mysql 需要互联网吗 Apr 08, 2025 pm 02:18 PM

MySQL 可在无需网络连接的情况下运行,进行基本的数据存储和管理。但是,对于与其他系统交互、远程访问或使用高级功能(如复制和集群)的情况,则需要网络连接。此外,安全措施(如防火墙)、性能优化(选择合适的网络连接)和数据备份对于连接到互联网的 MySQL 数据库至关重要。

MySQL安装后服务无法启动的解决办法 MySQL安装后服务无法启动的解决办法 Apr 08, 2025 am 11:18 AM

MySQL拒启动?别慌,咱来排查!很多朋友安装完MySQL后,发现服务死活启动不了,心里那个急啊!别急,这篇文章带你从容应对,揪出幕后黑手!读完后,你不仅能解决这个问题,还能提升对MySQL服务的理解,以及排查问题的思路,成为一名更强大的数据库管理员!MySQL服务启动失败,原因五花八门,从简单的配置错误到复杂的系统问题都有可能。咱们先从最常见的几个方面入手。基础知识:服务启动流程简述MySQL服务启动,简单来说,就是操作系统加载MySQL相关的文件,然后启动MySQL守护进程。这其中涉及到配置

See all articles