循环结构的基本概念
计算平均分
存在的问题:如果学生有10、100、1k,真正的代码需要结构化
循环改进
i=0
sum = 0
while i < 5:
i+=1
a = input("请输入第%d个成绩" % i)
sum += int(a)
avg = sum /(i)
print("平均分:%.2f"%avg)
(1)改进之后,如果学生有10,100、1000,代码结构基本没有变化
语法
While 条件:
循环内容
注意:
如果循环的条件成立,运行循环内容
不成立直接跳过循环
循环的套路
(1)考虑清楚循环的初始条件
(2)循环的结束条件
(3)重复需要干什么
(4)如何过渡到下一次循环
循环的案例
计算GDP
# GDP增长
# 中国49089.82,8%,美国142562.75,2% 2009年
cn = 49089.82
usa = 142562.75
year = 2009
while cn <= usa:
cn *=1.08
usa*=1.02
year+=1
print("%d年"%year)
计算圆周率
# 计算圆周率
import math
i = 1
p = 0.00
k = 1
n = 1
while math.fabs(k) >=0.0000001:
k=4/i
if i > 0:
i=(i+2)*-1
else:i=(i-2)*-1
p+=k
n+=1
print(p)
判断素数
# 判断是否为素数
n = input("输入一个数")
for i in range(1,int(n)):
for k in range(1,int(n)):
if i*k==int(n):
print("%s不是素数"%n)
exit("吔?")
print("%s是素数"%n)
5-4.4、判断一个数是否为完数
要求:输入一个数,输出:是或者不是
# 判断完数
n = int(input("输入一个数"))
sum = 0
for i in range(1,n-1):
if n%i == 0 :
sum +=i
i+=1
if sum == n:
print(str(n)+"是完数")
else:
print("不是完数")
5-5、for循环
5-5.1、range()函数
range(开始值,结束值,步长)
range(1,10)#1,2,3,4,5,6,7,8,9,10
range(1,10,2)#1,3,5,7,9
range(10,0,-1)#10,9,8,7,6,5,4,3,2,1
for in 循环
for 临时变量 in 集合(字符串、数组,range函数)
循环体
for与while循环的使用选择
特点:
能用for循环的,肯定能用while循环
能用while循环的不一定能用for循环
while循环特点:
(1)死循环 while true
(2)循环次数不固定
案例
计算1000以内偶数之和
print(sum(int(i) for i in range(0,1001,2)))
计算1000以内奇数之和
print(sum(int(i) for i in range(1,1000,2)))
循环控制关键字
break
跳出整个循环,循环不走了
如果循环油嵌套的话,只是跳出这一层循环,对上一层没有影响
continue
跳出本次循环,对下一次循环没有任何的影响
循环的嵌套
一个循环中嵌套着另外一个循环:
for n in range(3,100):
k = True
for i in range(3,n):
if n % i ==0:
k = False
break
if k:
print(str(n)+"是素数")
5-11.2、打印出如下格式
for i in range(1,6):
for j in range(0,i):
print("*",end="")
print("")
5-11.3、九九乘法表
九九乘法
for i in range(1,10):
for k in range(1,i+1):
print(str(i)+"x"+str(k)+"="+str(i*k),end="\t")
print()