1.循环----while语句
语法:
while condition(循环条件):
block(循环体)
说人话就是: while旁边是循环条件(布尔类型or表达式): 之后进入循环体执行什么, *避免死循环(break住)
举个小栗子练练:
# 1.输出1 - 100的偶数和
方法一:使用while循环
n=1
sum=0
while n<=100:
if n%2==0:
sum=sum+n
n=n+1
print(sum)
方法二:当然也可以使用for循环
sum=0
for i in range(1,101):
if i%2==0:
sum+=i
print(sum)
# 2.请用户输入数字,求和,直到输出0退出
count=0
while True:
num = int(input('请输入数字:'))
if num==0:
break
else:
count+=num
print(count)
print()
使用上面的方式print的时候,每次输入一个数字,就会在循环内计算一次,当输出0时结束,效果如下:
请输入数字:30
30
请输入数字:20
50
请输入数字:70
120
请输入数字:26
146
请输入数字:0
count=0
while True:
num = int(input('请输入数字:'))
if num==0:
break
else:
count+=num
print(count)
这种输出方式在最终一步,输入0时,才会最终计算完毕,效果如下:
请输入数字:30
请输入数字:62
请输入数字:40
请输入数字:0
152
# 遇到3和5的倍数,输出当前值是3和5的倍数
# 遇到5的倍数输出当前值是5的倍数
# 遇到3的倍数输出当前值是3的倍数
形式1: 外部输入,判断完终止:
n = int(input('请输入一个1-100的整数:'))
while n<=100:
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的倍数')
else:
print(n,'不是3或5的倍数')
break
形式2: 输出1-100内的所有3或5的倍数的数字
n=1
while n<=100:
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
2.for循环:
语法:
for...(element)...in...(iteratable):
block
当可迭代对象中有元素可以迭代,进入循环体,执行block
range()函数会生成数列
小练习:
1.输出一行9个*
2.输出9行9个*
for i in range(9):
print('*',end=' ')
for i in range(9):
print('*'*9 )
3.输出直角三角形
for i in range(1,9):
print('*'*i)
4.输出九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,'*',i,'=',j*i,end=' ' '\t')
print()
5.等腰三角形
row = 7
for i in range(row):
for j in range(row,i,-1):
print(' ',end=' ')
for n in range(i*2+1):
print('*',end=' ')
print()
6.菱形
方法一:(拼凑)
row = 7
for i in range(row):
for j in range(row,i,-1):
print(' ',end=' ')
for n in range(i*2+1):
print('*',end=' ')
print()
for i in range(1,row):
for k in range(i+1):
print(' ',end=' ')
for m in range((row-i)*2-1):
print('*',end=' ')
print()
方法二:(对称)
for i in range(-3,4):
if i<0:
pre=-i
else:
pre=i
print(' '*pre+'*'*(7-pre*2))
7.统计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)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)