循环结构
判断条件 boolean类型的表达式
while 判断条件:
循环体
(需要注意冒号和缩进)
避免死循环-->正规代码
(while True为死循环)
例:1.求1-100偶数之和
n=1
a=0
while n<=100:
if n%2==0:
a+=n
n=n+1
print(a)
2.请用户输入数字 求和 输入0结束退出
sum=0
while True:
n=int(input('请输入数字:'))
if n==0:
break
sum+=n
print(sum)
while...else 循环不正常结束
例:3.输入数字 遇到3和5的倍数输出当前值是3和5的倍数
遇到5的倍数输出当前值是5的倍数
遇到3的倍数输出当前值是3的倍速
n=1
while n<=100:
n=int(input('请输入数字:'))
if (n%3==0)and(n%5==0):
print(n,'是3和5的倍数')
elif n%5==0:
print(n,'是5的倍数')
elif n%3==0:
print(n,'是3的倍数')
n=n+1
else:
print('循环结束')
for循环 range()函数
如果你需要遍历函数序列,可以使用内置range()函数,它会生成数列,不包含结尾参数
range(5):一个参数 从0-5 不包含自己
range(5,9):二个参数 从5开始到9不包含自己
range(5,55,5):三个参数 从5开始到55不包含自己增量是5也可以是复数
for 迭代变量 in 数列/字典/元组
逐个从列表/字典/元组取值
for x in range(1,x):
循环体
例:
nums=range(5)
for i in range(5):
print(i)
执行以上程序输出结果如下
0
1
2
3
4
4.输出一行9个*
for i in range(9):
print('*',end='')
5.输出9行9个*
for i in range(9):#几行
for i in range(9):#一行几个
print('*', end='')
print()
6.用*输出直角三角形
for i in range(1,6):
for j in range(6,i,-1):
print('*',end='')
print()
执行以上程序输出结果如下
*****
****
***
**
*
7.99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,'*',i,'=',j*i,end='\t')
print()
执行以上程序输出结果如下
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
8.菱形
rows=7
for i in range(rows):#第一个等腰三角形7行
for j in range(rows-1,i,-1):#rows-1 第一个直角三角形少一行让等腰三角形左移 -1递减
print(' ',end='')
for k in range(i*2+1):#i*2 两个直角三角形 +1为等腰三角形每行+1
print('*',end='')
print()
for i in range(1,rows-1+1):
for j in range(i):
print(' ',end="")
for k in range((rows-i)*2-1):
print("*",end='')
print()
执行以上程序输出结果如下
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
rows=int(input('请输入菱形的行数')
s=rows//2+1#上半部分
x=rows-s #下半部分
for in in range(s):
for j in range(s-1,i,-1):
print(' ',end='')
for k in range(i*2+1):
print('*',end='')
print()
for in in range(1,x+1):
for j in range(i):
print(' ',end='')
for k in range((s-i)*2-1):
print('*',end='')
print()
9.统计3个班级 中每个班级3个学生的成绩: 大于80的人数几个
a=b=c=d=0
while True:
num=int(input('请输入成绩:'))
if num>=90 and num<=100:
a+=1
elif num>=80 and num<90:
b+=1
elif num>=60 and num<80:
c+=1
elif num>=0 and num<60:
d+=1
else:
print('超出范围重新输入')
continue
str=input('是否重新输入? y/n')
if str.__eq__('n'):
break
print('>=90',a)
print('>=80',b)
print('>=60',c)
print('>=0',d)
双重循环中break,continue的作用
<1>.continue结束本次循环 继续下一次循环continue下面的代码不执行
<2>.break 结束所在的循环层 执行外层代码-->外侧大循环
10.统计三个班级中每个班级三个学生的成绩:大于80的人数有几个
count=0
for i in range(1,4):
print('请输入第',i,'个班级学生的成绩')
for j in range(1,4):
score=int(input('请输入第'+str(j)+'个学生成绩'))
if score<0:
print('输入负数 进入下一个班级')
break
if score<80:
continue
count+=1
print('大于80的人数:',count)