循环语句(for、while)(一)

2016-12-18

while循环结构;

while语句是Python语言中最通用的迭代结构。

while语句最完整的书写格式是:首行以及测试表达式,有一列或多列缩进语句的主体以及一个可选的else部分(控制

权离开循环而又没有碰到Break语句时会执行)。Python会一直计算开头的测试,然后执行循环主体内的语句,直到测试返回值为假。

1 while <test>:           #Loop test
2     <statements1>    #Loop body
3 else:                       #Optional else
4     <statements2>    #Run if didn‘t exit loop with break

下面的例子会不断切掉字符串第一个字符,直到字符串为空返回假为止。这样直接测试对象,而不是使用更冗长的等效写法(while != ‘’),可以说是一种典型的写法。

1 x = ‘spam‘
2 while x:                #while x is not empty
3     print (x, end=‘ ‘)
4     x = x[1:]         #strip first character off x

这里使用end=‘ ‘关键字参数,使所有输出都出现在同一行,之间用空格隔开。

Python中没有其他语言中所谓的“do...until(while)”循环语句。不过可以在循环主体底部以一个测试和break来实现类似的功能。

1 while True:
2     ...loop body...
3     if exitTest():break

break:跳出最近所在的循环(跳过整个循环语句);

continue:跳到最近所在循环的开头出(来到循环的首行);

1 x = 10
2 while x:
3     x = x-1
4     if x % 2 != 0:continue
5     print (x, end= ‘ ‘)

continue应该谨慎使用。

上述代码的等效替换:

1 x = 10
2 while x:
3     x = x-1
4     if x % 2 == 0:
5         print (x, end= ‘ ‘)

pass:什么事也不做,只是一个占位语句;

循环else块:只有当循环正常离开时才执行(也就是没有碰到break语句)。

加入break和continue语句后while循环的一般格式:

1 while <test1>:
2     <statements1>
3     if <test2>:break         #Exit loop now,skip else
4     if <test3>:continue     #Go to of loop now,to test1
5 else:
6     <statements2>          #Run if we didn‘t hit a ‘break‘

break和continue语句可以出现在while(或for)循环主体的任何地方,但通常会进一步嵌套在if语句中,根据默写条件采取对应的操作。

for循环结构:

for循环在Python中是一个通用的序列迭代器:可以遍历任何有序的序列对象内的元素。for语句可用于字符串、列表、元组以及其他内置可迭代对象以及能够

通过类所创建的新对象。

Python for循环的首行定义了一个赋值目标(或一些目标),以及你想遍历的对象。

1 for <target> in <object>:        #Assign object items to target
2     <statements>                   #Repeated loop body:use target
3 else:
4     <statements>                   #if we didn‘t hit a ‘break‘

for循环的完整格式:

1 for <target> in <object>:     #Assign object items to target
2     <statements>
3     if <test> : break            #Exit loop now : skip else
4     if <test> : continue        #Go to top of loop now
5 else:
6     <statements>

for循环中的元组赋值

如果迭代元组序列,循环目标本身实际上可以是目标元祖。这只是元组解包的赋值运算的一个例子而已。记住,for循环把序列对象元素赋值给目标,

而赋值运算在任何地方工作起来都是相同的。

T = [(1,2),(3,4),(5,6)]
for (a,b) in T:                   #Tuple assignment at work
    print (a,b)

这种形式通常和zip一起调用,以实现并行遍历。在Python中,它通常还和SQL数据库一起使用,其中,查询结果表作为这里使用的列表这样的序列的序列而返回——外围的

列表就是数据库表,嵌套的元组是表中的行,元组赋值和列对应。

for循环中的元组是的使用items方法来遍历字典中的键和值变得很方便,而不必再遍历键并手动地索引以获取值:

1 D = {‘a‘:1,‘b‘:2,‘c‘:3}
2 for key in D:
3     print(key,‘=>‘,D[key])     #Use dict keys iterator and index

注意:for循环中的元组赋值并非是一种特殊情况,这一点很重要;单词for之后的任何赋值目标在语法上都是有效。尽管我们总是在for循环中手动地赋值以解包:

1 T = [(1,2),(3,4),(5,6)]
2 for both in T:
3     a,b = both              #Manual assignment equivalent
4     print(a,b)

任何嵌套的序列结构都可以按照这种方式解包,只不过因为序列赋值是如此通用:

for ((a,b),c) in [((1,2),3),[‘xy‘,6]]:
    print(a,b,c)

在Python3.0以后的的版本中,由于一个序列可以赋值给一组更为通用的名称(其中有一个带有星号的名称收集多个元素),我们可以在for循环中使用同样的语法来提取

嵌套的序列的部分:

1 for (a,*b,c) in [(1,2,3,4),(5,6,7,8)]:
2     print (a,b,c)
3
4 输出结果:
5 1 [2, 3] 4
6 5 [6, 7] 8

这种方式可以用来表示为嵌套序列的数据的行中选取多个列。

嵌套for循环:

本例是在for中示范循环else分句以及语句嵌套。考虑到对象列表(元素)以及键列表(测试),这段代码会在对象列表中搜索每个键,然后报告其搜索结果。

 1 items = ["aaa",111,(4,5),2.01]
 2 tests = [(4,5),3.14]
 3 for key in tests:
 4     for item in items:
 5         if item == key:
 6             print (key,"was found")
 7             break
 8     else:print(key,"not found!")
 9
10
11
12 运行结果
13 (4, 5) was found
14 3.14 not found!

因为这里的嵌套if会在找到相符结果时执行break,而循环else分句是认定如果来到此处,搜索就失败了。注意这里的嵌套。当这段代码执行时,同时有两个循环在运行:外层

循环扫描键列表,而内层循环为每个键扫描元素列表。循环else分句的嵌套是很关键的,其缩进至和内层for循环首行相同的层次,所以是和内层循环相关联的(而不是if或外层

的for)。

注意:如果我们采用in运算符测试成员关系,这个示例就会比较易于编写。因为in会隐形的扫描列表来找到匹配,因此可以取代内层循环。

 1 for key in tests:
 2     if key in items:
 3         print(key, "was found")
 4     else:
 5         print(key, "not found")
 6
 7
 8 输出结果:
 9 (4, 5) was found
10 3.14 not found

一般来说,基于对简洁和性能的考虑,让Python尽可能多做一点工作。

本例子以for执行典型的数据结构任务:收集两个序列(字符串)中相同元素。这差不多是简单的集合交集的例程。在循环执行后,res引用的列表中包含seq1和seq2中

找到的所有元素。

1 res = []                                #start empty
2  for x in seq1:                      #Scan first sequence
3     if x in seq2:                 #Common item?
4         res.append(x)      #Add to result end
5
6 运行结果:
7  res
8 [‘s‘, ‘a‘, ‘m‘]
时间: 2024-10-17 19:38:49

循环语句(for、while)(一)的相关文章

python基础之条件循环语句

前两篇说的是数据类型和数据运算,本篇来讲讲条件语句和循环语句. 0x00. 条件语句 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python interprets non-zero values as True. None and 0 are interpreted as False. Python 判断非0的值为 True, 而None和0被认为是 False.注意这里的True和False首字母大写,Py

循环语句注意事项

三种循环语句的区别? * do...while循环至少执行一次循环体. * for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句. for循环和while循环的区别: *如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环. 不知道用谁就用for循环.因为变量及早的从内存中消失,可以提高内存的使用效率. 需求:在控制台输出所有的"水仙花数"和个数 * 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身. * 举例:153就是

js中的循环语句

js中的循环语句可分为三种:1.while:2.do……while:3.for. while的语法为 while (exp) {    //statements;} var a=1,b=0; while(a<=1000){ if(a%2==0){ if(b%20==0) { document.write("<br>第"+parseInt(b/20+1)+"行偶数"); } document.write(a+"&nbsp"

【C语言】用循环语句输出菱形

//用循环语句输出菱形 #include <stdio.h> int main() { int i,j; for(i=0;i<=3;i++) //上4行 { for(j=0;j<=3;j++) //上4行的左边 { if(i+j<=2) printf(" "); else printf("*"); } for(j=4;j<=6;j++) //上4行的右边 { if(j-i>=4) printf(" ");

Python循环语句

Python语言中的循环结构包含两种语句,分别是while语句和for语句. 1. while语句 while(表达式): -- else: -- 执行过程:当循环表达式为True时,依次执行while中的语句.直到循环表达式的值为False时,才执行else语句或退出循环.其中else子句可以省略,表达式两端的等号也可以省略. 2. for语句 for循环用于遍历一个集合,依次访问集合中的每个项目.格式如下: for 变量 in 集合: -- else: -- 执行过程:每次循环从集合中取出一

python基础之循环语句

一.if条件语句: 语法: 1.if单分支(单重条件判断) if expression: expr_true_suite 注释:expession为真执行代码expr_true_suite if单分支(单重条件判断) if not  active or over_time >= 10: print('Warning:service is dead') warn_tag+=1 2.if+else循环语句 if 1<2: print('ok') else: print('no') 3.多分支if+

c的循环语句

循环结构有: 1. goto语句和if语句构成循环 2.while语句 3.do-while语句 4.for语句 goto语句 goto语句是一种无条件转移语句, 与Basic中的goto语句相似.goto语句的使用格式为: goto语句标号: 其中标号是一个有效的标识符,这个标识符加上一个":"一起出现在函数内某处, 执行goto语句后,程序将跳转到该标号处并执行其后的语句.另外标号必须与goto语句同处于一个函数中, 但可以不在一个循环层中.通常goto语句与if条件语句连用, 当

Web开发(初级)- python、JavaScript及jQuery循环语句

循环语句 一.概述 python中循环语句有两种,while,for: JavaScript中循环语句有四种,while,do/while,for,for/in jQuery循环语句each 二.python循环语句 2.1 for 循环 # a. li = [1, 2, 3, 4] for i in li:     print(i) # b. li = [1, 2, 3, 4] for i, j in enumerate(li, 1):     print(i, j)      # enume

子数涵数&#183;C语言——循环语句

之前,我们讲过了编程中的三种结构(顺序.条件.循环),现在我们来看一下循环语句如何编写. 一.while循环语句(先判断后执行) 1 #include<stdio.h> 2 int main(void) 3 { 4 int sum=0,i=1; //定义变量sum的值为0,变量i的值为1 5 while(i<=100) //当i小于等于100时,进入循环 6 { //while(){}:括号内为条件表达式,花括号内为循环体 7 sum=sum+i; //用sum来做累加器 8 i++;

#9.5课堂JS总结#循环语句、函数

一.循环语句 1.for循环 下面是 for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被执行之后执行 2.for-in语句 for-in语句是一种精准的迭代语句,可以用来枚举对象的属性. 下面是for-in语句的语法: for(property in expression) statement demo: for(var propName in w