python中的循环语句包括for循环语句和while循环语句,但是python中是没有do...while循环语句的。
while循环语句
while循环语句的一般格式为;
while condition:loop body
condition是循环判断条件,loop body是循环体。
当循环条件成立时,就执行循环体中的语句,循环条件不成立时,跳出循环。
下面是一个简单的实例:
# #计算0到100的和
sum=0
i=0
while i<=100:sum=sum+ii=i+1
print('0到100的整数和为:%d'%sum)
无限循环:
当我们设置条件表达式永远不为 false时,可以实现无限循环
#无限循环
while True:height=input('请输入你的身高(cm):')height=float(height)print('你的身高对应标准体重为:%fkg'%(height-105))
可以按终止按钮来退出死循环
无限循环在服务器上客户端的实时请求非常有用
while...else语句
while condition:loop body
else:CodeBlock
如果while后面的条件表达式(condition)成立,那么执行循环体中(loop body)的语句,不成立时,就执行else后面的(CodeBlock)语句。
简单实例如下:
#随机才一个0到10的整数
num=random.randint(0,10) #随机生成一个0到10之间的整数
num2=int(input('请输入你猜想的数字(整数):')) #输入猜想的数字
i=1 #i用于计算猜数的次数
while num2!=num: #条件表达式print('猜错了,再猜一次')num2 = int(input('请输入你猜想的数字(整数):'))i = i + 1
else:print('一共猜了%d次猜对啦!'%i) #条件表达式不成立就执行这条语句
如果while的循环体中只有一条语句的话,可以将这条语句和while写在同一行
flag=1
while flag:print('这是一个无限循环')
for循环语句
for循环的一般格式如下:
for <variable> in <sequence>:<statements1>
variable是一个变量名,sequence是变量范围,当变量在变量范围内时,执行statements1里面的语句,否则执行statements2中的语句
下面是简单的实例:
for num in range(1,5): #range(1,5)表示1到5的整数print(num,end='\t') #end='\t'表示制表符,也就是4个空格
print('\n') #\n是换行符str1='hello' #字符串
for str in str1:print(str,end='\t')
print('\n')list1=[1,2,3] #列表
for num in list1:print(num,end='\t')
print('\n')tuple1=(4,5,6) #元组
for num in tuple1:print(num,end='\t')
print('\n')#注意:集合是无序的,所以打印出来的数据也是无序的
set1={'t1','t2','t3'} #集合
for str in set1:print(str,end='\t')
print('\n')dict1={'name':'风之海蓝','sex':'男','age':33} #字典
for str in dict1.values():print(str,end='\t')
print('\n')
需要注意的是,对于集合,打印出来的结果并不是有序的
for...else
它的一般格式为:
for <variable> in <sequence>:<statements1>
else:<statements2>
statements1是循环主体,statements2是循环结束后执行的语句
一个简单实例:
for num in range(5):print(num,end='\t')
else:print('end')
range()函数
如果需要遍历数字序列,可以使用内置 range() 函数。它会生成数列,就像上面的实例一样。
我们可以指定区间值,也可以指定步长
for num in range(0,10,2): #0到10的整数,步长为2print(num,end='\t')
print('\n')
for num in range(0,10,3): #0到10的整数,步长为3print(num,end='\t')
print('\n')
for num in range(0,-10,-3): #0到-10的整数,步长为-3print(num,end='\t')
print('\n')
for num in range(-10,0,3): #-10到0的整数,步长为3print(num,end='\t')
可以看到,range的区间可以是正数区间,也可以是负数区间,区间的右边界值不被包含在内,步长也可以是正数或者负数。但是要注意的是,区间如果是从小到大,那么步长的数值要为正,区间如果是从大到小,那么步长的数值要为负数,否则会取不到数值。
我们可以结合 range() 和 len() 函数来遍历一个序列的索引,如下所示:
list1=['t1','t2','t3']
for i in range(len(list1)):print(list1[i])
break和continue
在循环语句中,我们常常要用到break语句和continue语句,它们是用来跳出循环的,但是两者又有区别。
break:跳出整个循环。它可以跳出 for 和 while 的循环体,如果从 for 或 while 循环中使用break终止,那么对应的循环 else 块将不执行。
continue:跳出当前循环。也就是在当前循环中,continue后面的语句不执行了,直接进入下一轮循环。
以下是简单实例:
#for循环中使用break
for num in range(1,10):if num==5:breakprint(num,end='\t')
print('结束')#for循环中使用continue
for num in range(1,10):if num == 5:continueprint(num,end='\t')
print('结束')#while中使用break
num = 10
while num > 0:num = num - 1if num == 5:breakprint('当前变量值为 :', num, end='\t')
print('结束')#while中使用continue
num = 10
while num > 0:num = num - 1if num == 5:continueprint('当前变量值为 :', num, end='\t')
print('结束')
可以看到,无论是在for循环中,还是在while循环中,如果使用的是break,那么它会跳出整个循环,后面的循环语句都不会执行了(如果有else子句,else子句里面的语句也不会执行)。但是如果用的是continue,那么只有当前循环中的剩余语句不会执行,后面循环中的语句以及else子句中的语句都会执行。
如果是在嵌套循环语句中,执行break,那么会跳出当前的整个循环,不会跳出外层循环
下面是一个简单的实例:
for n in range(2, 10):for x in range(2, n):if n % x == 0:print(n, '等于', x, '*', n // x)breakelse:# 循环中没有找到元素print(n, ' 是质数')
pass语句
pass是一个空语句,使用它是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
以下是一个实例:
list1=['花花','壳哥','飒飒','绒绒','海鸥哥哥']
for str in list1:if str=='飒飒':passprint('这是%s'%str)print(str)
print('结束')
可以看到pass不会对程序造成影响,不影响程序的正常运行,只作占位使用