python条件与循环-循环

1 while语句

while用于实现循环语句,通过判断条件是否为真,来决定是否继续执行。

1.1 一般语法

语法如下:

while expression:

  suite_to_repeat

1.2 计数

 1  2
 3 >>> cnt = 0
 4
 5 >>> while(cnt < 9):
 6
 7 ... print ‘the index is ‘, cnt
 8
 9 ... cnt += 1
10
11 ...
12
13 the index is 0
14
15 the index is 1
16
17 the index is 2
18
19 the index is 3
20
21 the index is 4
22
23 the index is 5
24
25 the index is 6
26
27 the index is 7
28
29 the index is 8

代码块里包含print和自增语句,将被重复执行,知道cnt不下于9。

1.3 无限循环

while True:

  suite_to_repeat

条件表达式一直为真。

2  for语句

for语句是python提供的另一个循环机制,可以用于遍历序列,可以用在列表解析和生成器表达式中。

2. 1 一般语法

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

for iter_var in iterable:

  suite_to_repeat

每次循环,iter_var迭代变量被设置为可迭代对象(序列、迭代器或其他支持迭代的对象)的当前元素,提供给suite_to_repeat语句块使用。

2.2 用于序列类型

主要介绍for循环迭代不同的序列对象:字符串、列表及元组。

迭代序列的三种方法:

(1)通过序列项迭代

每次迭代,eachName变量都被设置为列表中特定的某个元素。

(2)通过序列索引迭代

>>> namelist = [‘Bob‘, ‘Lisa‘, ‘Henry‘]

>>> for nameIndex in range(len(namelist)):

... print namelist[nameIndex]

...

Bob

Lisa

Henry

使用len()函数获取序列长度,使用range()函数创建了要迭代的序列。

(3)使用项和索引迭代

使用内建的enumerate()函数

>>> namelist = [‘Bob‘, ‘Lisa‘, ‘Henry‘]

>>> for i, eachName in enumerate(namelist):

... print i,eachName

...

0 Bob

1 Lisa

2 Henry

3 range()内建函数

range()完整语法如下:

range([start,] stop[, step])

range()会返回一个包含所有k的列表(start<=k<end),从start到end,k每次递增step,step不能为0。

>>> range(3, 7)

[3, 4, 5, 6]

4 与序列相关的内建函数

sorted()、reversed()、enumerate()、zip()

reversed():返回一个反序访问的迭代器;

 1 >>> namelist = [‘Bob‘, ‘Lisa‘, ‘Henry‘]
 2
 3 >>> years = [1978, 1989, 1990, 2003]
 4
 5 >>> for name in sorted(namelist):
 6
 7 ... print name,
 8
 9 ...
10
11 Bob Henry Lisa
12
13 >>> namelist
14
15 [‘Bob‘, ‘Lisa‘, ‘Henry‘]
16
17 >>> for name in reversed(namelist):
18
19 ... print name,
20
21 ...
22
23 Henry Lisa Bob
24
25 >>> for i, name in enumerate(namelist):
26
27 ... print i, name
28
29 ...
30
31 0 Bob
32
33 1 Lisa
34
35 2 Henry
36
37 >>> for name, year in zip(namelist, years):
38
39 ... print year, name
40
41 ...
42
43 1978 Bob
44
45 1989 Lisa
46
47 1990 Henry

5 break语句

break语句用于结束当前循环跳转到下条语句。

6 continue语句

当遇到continue语句时,程序终止当前循环,并忽略剩余的语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环(while循环),将验证条件表达式;如果是迭代循环(for循环),验证是否还有元素可以迭代,只有在验证成功的情况下,才开始下一次迭代。

>>> valid = False
>>> count = 3
>>> while count > 0:
...     input = raw_input(‘Enter passsword:‘)
...     for eachPasswd in passwdList:
...         if input == eachPasswd:
...             valid = True
...             break
...         if not valid:
...             print "invalid input"
...             count -= 1
...             continue
...         else:
...             break

7 pass语句 

pass语句不做任何事情(即NOP,No Operation,无操作),用于在需要有语句块的地方不写任何语句。

8 迭代器和iter()函数

从根本上来说,迭代器就是有一个next()方法的对象,而不是通过索引来计数。当你或是一个循环机制需要下一项时,调用迭代器的next()方法就可以获得它。

迭代器为类序列对象提供了一个类序列的接口,它们是一组数据结构,可以利用它们的索引从0开始一直"迭代"到序列的最后一个条目。

8.1 使用迭代器

(1)序列

>>> i = iter(myTuple)

>>> i.next()

123

>>> i.next()

‘abc‘

>>> i.next()

45.600000000000001

>>> i.next()

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

StopIteration

序列会自动的产生它们字节的迭代器。

for I in seq:

do_something_to(i)

(2)字典

字典也是可迭代的python数据类型。字典的迭代器会遍历它的键(key)。语句for eachKey in myDict.keys()可以缩写为for eachKey in myDict。

>>> myDict = {‘a‘:10, ‘b‘:20, ‘c‘:30}

>>> for eachKey in myDict:

... print eachKey, myDict[eachKey]

...

a 10

c 30

b 20

另外,python还有三个新的内建字典方法来定义迭代:myDict.iterkeys()(通过键迭代)、myDict.itervalues()(通过值迭代)及myDict.iteritems()(通过键-值对迭代)。

(3)文件

文件对象生成的迭代器会自动调用readline()方法,这样循环可以访问文本文件的所有行,就可以使用for eachline in myFile替换for eachline in myFile.readlines()

>>> myFile = open(‘testfile.txt‘)

>>> for eachline in myFile:

... print eachline

...

8.2 创建迭代器

对一个对象调用iter()就可以得到它的迭代器。语法如下:

iter(obj)

iter(func, sentinel)

如果传递一个参数给iter(),会检查传递的参数是不是一个序列,如果是,根据索引从0一直迭代到序列结束。如果是传递的两个参数给iter(),会重复的调用func,直到迭代器的下个值等于sentinel。

9 列表解析

列表解析可用于动态的创建列表,语法如下:

[expr for iter_var in iterable]

前面的expr应用于序列的每个成员,最后的结果值是该表达式产生的列表。迭代变量并不需要是表达式的一部分。

>>> [x**2 for x in range(6)]

[0, 1, 4, 9, 16, 25]

还可以和if表达式结合使用,扩展语法如下:

[expr for iter_var in iterable if cond_expr]

这个语法会过滤或"捕捉"满足条件表达式cond_expr的序列成员。

>>> [x for x in range(6) if x % 2]

[1, 3, 5]

(1)举例:矩阵样例

如一个3行5列的矩阵

>>> [(x+1, y+1) for x in range(3) for y in range(5)]

[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]

10 生成器表达式

生成器表达式是列表解析的一个扩展。生成器是特定的函数,允许你返回一个值,然后"暂停"代码的执行,稍后恢复。

列表解析的不足是必须生成所有的数据,用以创建整个列表。生成器的基本语法和列表相似,不过不是真正的创建数字列表,而是返回一个生成器,这个生成器每次计算出一个条目后,把这个条目"产生"(yield)出来。

生成器表达式如下:

(expr for iter_var in iterable if cond_expr)

(1)举例:交叉配对样例

>>> rows = [1, 2, 3, 17]
>>> def cols():
...     yield 56
...     yield 2
...     yield 1
>>> x_product_pairs = ((i, j) for i in rows for j in cols())
>>> for pair in x_product_pairs:
...     print pair
...
(1, 56)
(1, 2)
(1, 1)
(2, 56)
(2, 2)
(2, 1)
(3, 56)
(3, 2)
(3, 1)
(17, 56)
(17, 2)
(17, 1)

(2)重构样例

获取文件中长度最大的行:

1 f = open(‘/etc/motd‘,‘r‘)
2
3 longest = max(len(x.strip()) for x in f)
4
5 f.close()
6
7 return longest

简化如下:

1 return max(len(x.strip()) for x in open(‘/etc/motd‘)) 

原文地址:https://www.cnblogs.com/mrlayfolk/p/12000495.html

时间: 2024-11-01 02:03:27

python条件与循环-循环的相关文章

Python - 条件控制、循环语句 - 第十二天

Python 条件控制.循环语句 end 关键字 关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下: Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块. Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else. 注意: 1.每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块. 2.使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块. 3

Python条件判断和循环

一.Python 之 if条件判断 语句 (1).Python 之 if--if语句后面接表达式,然后用 : 表示代码开始           注意: Python代码的缩进规则.缩进要严格按照Python的习惯用法:4个空格,不要使用TAb,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误.          如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:    >>> age = 20 >>> if age >

Python条件控制语句与循环控制语句(四)

程序语言的条件控制语句与循环控制语句都一样,都是if与while还有for等. Python的条件语句是通过一条或多条语句的执行结果(True或false)来决定执行的代码块. If语句一般格式为: If condition_1 : statement block_1 elif condition_2  : Statement block_2 else condition_3 : Statement block_3 如果condition_1条件成立,则执行 statement block_1,

python条件判断与循环

条件判断 python的缩进规则,如果if语句判断是True,就把所进的代码执行,也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了 num=num >=:     (num)     () :     (num)     () 当然上面的判断是粗略的,完全可以用elif做更细致的判断 num=num >=:     (num)     () num >=:     () :     () elif是else if 的缩写,完全可以

python 条件控制与 循环

1.条件控制(if语句) 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块 if 语句 用 elif 代替了 else if if...elif...else if condition_1(条件1): statement_block_1 # 如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句 elif condition_2: statement_block_2 else: sta

python 条件判断和循环

条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现 age = 20 if age >= 18: print 'your age is',age print 'adult' 根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做. 也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了: a

Python条件语句与循环

1.判断与循环python 缩进main:print("Hello")print("Hello world.") if 判断条件: 执行语句 elif 判断条件: 执行语句 else: 执行语句 while 判断条件: 执行语句 a = 100 while a>1: print(a) a-=1 if a==50: break # 退出循环 if a==55: print("5555555555") continue # 此次循环结束,进入下

Python条件控制与循环语句

1. 条件控制 # if-elif-else结构 age = 12 if age < 4: price = 0 elif age < 18: price = 5 else: price = 10 print("Your admission cost is $" + str(price) + ".") # Your admission cost is $5. 可以使用多个elif代码块,也可以省略else代码块. 1.1 使用if语句处理列表 # 确定列表

Python条件语句和循环

条件语句: if... elif... else 循环语句: while for 退出:break continue return exit pass 应用场景:三级菜单 输入城市序号进入该菜单 输入b返回 输入q退出 #!/usr/bin/env python3 import os import sys ''' 制作一个三级菜单 山东 日照 东港 岚山 五莲 ''' def showcd(dir): ''' :param dir: 要去的目录 :return: 返回要去的目录下的列表 '''

python 条件语句、循环语句

*条件语句: 流控制语句-分支结构: 语法: 1.简单条件语句: if 条件:语句 2. if 条件: 语句1: else: 语句2 3 if   条件: 语句: elif 条件: 语句1: elif 条件: 语句1: else: 语句3 条件:可以用 >=  <=  >  < ==  != 0-10之间的数 如果判断 需要多个条同时判断时,or   and -逻辑运算符 if n>0 and n<10 0-5 或者10-15之间的数 if (n>0and n&l