前面我们学习了while循环语句,for循环语句跟while差不多。
for 变量 in range(start,stop,step):
为了方便解释,for i in range (x,y,z)
当z>0时,x一直增加,到x>=y时,循环停止
当z<0时,x一直减少,到x<=y时,循环停止
如果x已经>或已经<y了,那么循环一次也不执行
for 循环变量 in range(stop):
这里start默认为0,step默认为1
例如 for i in range (4):
print(i)
结果: 0 1 2 3
当i到达4时候,循环停止,输出0123
for 循环变量 in range (start,stop)
这里默认step为1
当start大于stop时,程序不执行
例如:for i in range(2,5)
print(i)
结果:2 3 4
一直逼近stop值,但不等于stop值
for循环的退出
第一:当满足x>=y时,循环自动退出
第二:可以用break
for i in range(4):
print(i)
if i%2==1:
break
print("结束:",i)
结果:
0
1
结束:1
如果i除2取余1就结束
案例:计算s=a+aa+aaa+……n个a,其中a为1~9,n为自己输入
a=0
while a<=0 or a>=10:
a=input("输入a值:")
a=int(a)
n=0
while n<=0:
n=input("输入n值:")
n=int(n)
m=0
s=0
for i in range(n):
m=10*m+a
s=s+m
if i<n-1: #注意if和s上下对齐
print(m,end="+")
else:
print(m,end="=")
print(s)
an的输入用input,同时用while来限制an的取值范围,如果a超过1~9就会进入while循环,再次要求输入input,来确保an的值
在for循环中,s为总量,m=10*m+a,例如a=3,m每次循环就是,3 33 333 3333 ,s是让3 33 333 n个3相加。if语句,如果i小于n-1就在数字后面"+"这个字符串,这里for循环语句的取值范围是0到n-1(n-1取的到,n取不到),也就是当i等于n-1时,进入else,输出"=",最后print输出s总量
在for循环中的注意事项,第一for循环是自动变化的,我们人为添加变化公式,会出现逻辑混乱如:
for c in range(1,5,2):
print(c)
c=c+1
结果:1 3 可以看出c=c+1无用,不成立
第二:当step=0时会陷入死循环,无法进行程序
第三,for d inrange(2,n)里面d永远不可能输出n的,因为括号里的n取不到,如
n=input("数值:")
n=int(n)
for d in range (2,n):
if n%d==0:
break
if d==n-1:
print("这是素数")
else:
print("这不是素数")
for循环里,n是取不到的,所以if后面应该为d==n-1,因为d==n根本不可能,n根本取不到,这里就是要我们注意for循环括号里的取值范围