Python3 循环语句
本章节将为大家介绍Python循环语句的使用。
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:

while 循环
Python中while语句的一般形式:
while 判断条件:
语句
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
以下实例使用了 while 来计算 1 到 100 的总和:
实例
执行结果如下:
1 到 100 之和为: 5050
无限循环
可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下:
实例
执行以上脚本,输出结果如下:
输入一个数字 :5 你输入的数字是: 5 输入一个数字 :
你可以使用 CTRL+C 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
实例
执行以上脚本,输出结果如下:
0 小于 5 1 小于 5 2 小于 5 3 小于 5 4 小于 5 5 大于或等于 5
简单语句组
类似if语句的语法,如果你的while循环体中只有一条语句,你可以将该语句与while写在同一行中, 如下所示:
实例
注意:以上的无限循环你可以使用 CTRL+C 来中断循环。
执行以上脚本,输出结果如下:
欢迎访问小鸟启蒙! 欢迎访问小鸟启蒙! 欢迎访问小鸟启蒙! 欢迎访问小鸟启蒙! 欢迎访问小鸟启蒙! ……
for 语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
Python loop循环实例:
实例
以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体:
实例
执行脚本后,在循环到 "facesoho"时会跳出循环体:
循环数据 Baidu 循环数据 Google 小鸟启蒙! 完成循环!
range()函数
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
实例
你也可以使用range指定区间的值:
实例
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
实例
负数:
实例
您可以结合range()和len()函数以遍历一个序列的索引,如下所示:
实例
还可以使用range()函数来创建一个列表:
实例
break和continue语句及循环中的else子句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。实例如下:
实例
执行以上脚本输出结果为:
当前字母为 : R 当前字母为 : u 当前字母为 : n 当前字母为 : o 当前字母为 : o 当期变量值为 : 10 当期变量值为 : 9 当期变量值为 : 8 当期变量值为 : 7 当期变量值为 : 6 Good bye!
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
实例
执行以上脚本输出结果为:
当前字母 : R 当前字母 : u 当前字母 : n 当前字母 : b 当前变量值 : 9 当前变量值 : 8 当前变量值 : 7 当前变量值 : 6 当前变量值 : 4 当前变量值 : 3 当前变量值 : 2 当前变量值 : 1 当前变量值 : 0 Good bye!
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。
如下实例用于查询质数的循环例子:
实例
执行以上脚本输出结果为:
2 是质数 3 是质数 4 等于 2 * 2 5 是质数 6 等于 2 * 3 7 是质数 8 等于 2 * 4 9 等于 3 * 3
pass 语句
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句,如下实例
实例
最小的类:
实例
以下实例在字母为 o 时 执行 pass 语句块:
实例
执行以上脚本输出结果为:
当前字母 : R 当前字母 : u 当前字母 : n 执行 pass 块 当前字母 : o 执行 pass 块 当前字母 : o 当前字母 : b Good bye!

文人墨客
一个四位数 abcd,满足 abcd * 4 = dcba,求这个数:
for i in list(range(1000,2500)): num2 = i*4 a = i //1000 b = i % 1000//100 c = i % 1000%100//10 d = i % 10 e = num2 //1000 f = num2 % 1000//100 g = num2 % 1000%100//10 h = num2 % 10 if a==h: if b==g: if c== f: if d==e: print(num2,end=',')文人墨客
选择排序python版:
a=[1,5,4,2,2,21,12,7,0] b=list(set(a)) # 建立新的列表,嵌套的是集合(除去冗余元素并自动排序) c=[] # 建立空列表,用来存放选择排序的数据 for j in b: #集合列表中选择元素 for i in a: #列表中选择元素, if i ==j: c.append(i) print(c) ''' 我输入的列表元素集合有:1,2,4,5,12,21(已排好序并除去冗余) 其中我依次选择集合中的各个数据,与原来列表的元素相比 如果相等,我就把a集合的相对应的数据存到空列表里 '''当然,有一种更方便的排序方式:
文人墨客
生成直观的九连环解法:
#!/usr/bin/python x = ["-θ","-θ","-θ","-θ","-θ","-θ","-θ","-θ","-θ"] y = ["—","—","—","—","—","—","—","—","—"] def down(n, l): #拆解 v = len(l) #计算数列个数用于改变数列对应位置 if n>2: down(n-2, l) #拆下n-2的环 l[v-n] = "—" #将v-n位"-θ"改为"—" 表示拆下 for x in l: #输出列表每一个元素 print(x,end=' ') print() #换行 up(n-2, l) #装上n-2位 down(n-1, l)#拆下n-1位, 后面同理 if n==2: l[v-2], l[v-1] ="—","—" for x in l: print(x,end=' ') print() if n<2: l[v-1] = "—" for x in l: print(x,end=' ') print() def up(n, l): v = len(l) if n>2: up(n-1, l) down(n-2, l) l[v-n] = "-θ" for x in l: print(x,end=' ') print() up(n-2, l) if n==2: l[v-2], l[v-1] = "-θ","-θ" for x in l: print(x,end=' ') print() if n<2: l[v-1] ="-θ" for x in l: print(x,end=' ') print() print("拆解\n") for i in x: print(i,end=' ') print() down(9, x) print('---------------------------------\n','装上\n') for i in y: print(i,end=' ') print() up(9, y) print("结束")九连环拆解,递归算法
def down(n): if n>2: down(n-2) print('卸下',n,'环') up(n-2) down(n-1) if n==2: print('卸下 {},{} 环'.format(n,n-1)) if n<2: print('卸下',n,'环') def up(n): if n>2: up(n-1) down(n-2) print("装上",n,"环") up(n-2) if n==2: print("装上 %d,%d 环" % (n,n-1)) if n<2: print("装上",n,"环") print("拆解") down(2) print('---------------------------------\n','装上') up(3) print("结束")文人墨客
彩票游戏
import random t1="开始游戏" t2="结束游戏" print(t1.center(50,"*")) data1=[] money=int(input("输入投入的金额:")) print("你现在余额为:%d元"%money) while 1: for i in range(6): n = random.choice([0, 1]) data1.append(n) if money<2: print("你的余额不足,请充值") m=input("输入投入的金额:") if int(m)==0: break else: money=int(m) while 1: j=int(input("输入购买彩票数量")) if money-j*2<0: print("购买后余额不足,请重新输入") else: money = money - j * 2 print("你现在余额为:%d元" % money) break print("提示:中奖数据有六位数,每位数为0或者1") n2=input("请猜测中奖数据:(输入的数字为0或1)") print(str(data1)) f=[] for x in n2: f.append(x) f1 = str(f) f2 = f1.split("'") f3 = "".join(f2) print("你猜测的数据为:", f3) if f3==str(data1): print("中奖数字为:",data1) print("恭喜你中大奖啦") money=money+j*100 print("你现在余额为:%d元" % money) else: print("中奖数字为:", data1) print("没有中奖,请继续加油") con = input("请问还要继续么?结束请输入no,继续请任意输入字符:") if con=="no": break data1=[] print(t2.center(50,"*")) print("你的余额为:%d元"%money)文人墨客
原九九乘法表逆时针输出:
<pre>for i in range(9,0,-1): for j in range (1,i): print("\t",end="") for k in range (i,10): print("%dx%d=%d" % (i,k,k*i), end="\t") print()文人墨客
猜拳小游戏
import random while 1: s=int(random.randint(1,3)) if s==1: ind="石头" elif s==2: ind="剪刀" elif s==3: ind="布" m=input('输入石头,剪刀,布,输入end结束游戏:') blist=['石头','剪刀','布'] if(m not in blist) and (m!='end'): print("输入错误,重试:") elif(m=='end')and(m not in blist): print(ind) print("\n游戏退出") break elif m==ind: print("平") elif (m == '石头' and ind =='剪刀') or (m == '剪刀' and ind =='布') or (m == '布' and ind =='石头'): print ("电脑出了: " + ind +",你赢了!") else: print ("电脑出了: " + ind +",你输了!")文人墨客
冒泡排序,python 版本
解析:很经典的排序方式,从数组中的第0个元素开始,与后面一个元素进行比较,如果前面的元素大于后面的元素,就调换位置,循环到最后(即:a0与a1比较得到结果后,a1与a2比较...),最大的元素被换到数组最末尾,剔除掉最后一个元素,在余下的数组元素中进行上述操作,到最后,整个数组呈现从小到大的排序
# python 冒泡排序 def paixu(li) : max = 0 for ad in range(len(li) - 1): for x in range(len(li) - 1 - ad): if li[x] > li[x + 1]: max = li[x] li[x] = li[x + 1] li[x + 1] = max else: max = li[x + 1] print(li) paixu([41,23344,9353,5554,44,7557,6434,500,2000])文人墨客
#十进制转化 while True: number = input('请输入一个整数(输入Q退出程序):') if number in ['q','Q']: break #如果输入的是q或Q,结束退出 elif not number.isdigit(): print('您的输入有误!只能输入整数(输入Q退出程序)!请重新输入') continue #如果输入的数字不是十进制,结束循环,重新开始 else : number = int(number) print('十进制 --> 十六进制 :%d -> 0x%x' %(number,number)) print('十进制 --> 八进制 :%d -> 0o%o' %(number,number)) print('十进制 --> 二进制 :%d ->'%number,bin(number))文人墨客
关于pass的作用:
pass只是为了防止语法错误。
if a>1: pass #如果没有内容,可以先写pass,但是如果不写pass,就会语法错误pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。
文人墨客
while 循环语句和 for 循环语句使用 else 的区别:
文人墨客
1-100 的和:
文人墨客
for 循环的嵌套使用实例:
#!/usr/bin/python3 for i in range(1,6): for j in range(1, i+1): print("*",end='') print('\r')输出结果:
文人墨客
使用循环嵌套来实现99乘法法则:
#!/usr/bin/python3 #外边一层循环控制行数 #i是行数 i=1 while i<=9: #里面一层循环控制每一行中的列数 j=1 while j<=i: mut =j*i print("%d*%d=%d"%(j,i,mut), end=" ") j+=1 print("") i+=1文人墨客
for 循环 1-100 所有整数的和
#!/usr/bin/env python3 n = 0 sum = 0 for n in range(0,101):# n 范围 0-100 sum += n print(sum)文人墨客
使用内置 enumerate 函数进行遍历:
for index, item in enumerate(sequence): process(index, item)实例