循环语句基础

本文详细介绍了Python中的循环结构,包括for循环和while循环的使用,通过实例展示了如何控制循环的初始、结束条件、循环体以及步长,并探讨了循环在不同场景下的应用,如绘制图形、数学函数的可视化以及随机路径的生成。同时,文章还提供了多个代码示例,帮助读者深入理解循环控制技巧。
摘要由CSDN通过智能技术生成

循环四要素

  1. 循环的初始:待解决的问题应该从哪里开始计算

  2. 循环的继续条件(结束条件):重复时需要满足哪些条件

  3. 循环体:哪些代码需要重复的去执行

  4. 循环的步长、周期、间距、计数:控制循环的进度,每一次循环之间需要有一个可变的量来控制循环

距离:向前走10步

  1. 循环的初始:从第1步开始走

  2. 循环的继续条件:有没有达到第10步

  3. 循环体:向前走1步

  4. 循环的步长、周期、间距、计数:当前走了第几步

循环执行的流行:1-2-3-4-2-3-4-2-3-4....直到2不满足为止

在Python当中,循环语句主要有两种:

  • for循环

  • while循环

for循环

主要用于已知循环次数的情况

语法结构:

for i in range(a,b,c):
	code
"""
i指的就是控制变量 变量名默认是i 当然我们也可以自己改变重新命名
a,b分别表示计数:a初始,b结束 都是整数  [a,b)
c指的是步长/变化/间距:从a-b你是一个一个的走,还是两个两个的走 c默认1
code:需要被循环执行的代码
"""

# 将一个输出语句打印10次
for i in range(1,11):
    print("Hello World!")

for i in range(1,11):
    print(i)
"""
1 2 3 4 5 6 7 8 9 10 11
  i
i取的是从1~10之间的数字 步长为1
1 2 3 4 5 6 7 8 9 10
"""

for i in range(1,11,2):
    print(i)
"""
1 2 3 4 5 6 7 8 9 10 11
                i
i取的是从1~10之间的数字 步长为2
1 3 5 7 9
"""

"""
range(a,b,c)
默认从a到b,步长为c 递增关系 等差关系(等差为c)
"""
for i in range(1,10,-1):
    print(i)
"""
此时步长为-1 应该是递减关系 但是开始是1结束是10
从1到10具有递减关系吗?没有的 循环不执行
"""
for i in range(10,1,-1):
    print(i)
for i in range(10,1,-2):
    print(i)
"""
上述就是一个纯粹的递减关系
"""

"""
对于range(a,b,c)总结
如果不写c 默认从a到b是递增的关系 步长为1 a <= b
如果写c
    c > 0 递增关系 a <= b
    c < 0 递减关系 a <= b
    c == 0 不可以的 代码报错
"""
for i in range(1,11,0):
    print(i)
# 代码报错 ValueError: range() arg 3 must not be zero

根据问题的规律,来找递增递减的关系

打印
    *****
    *****
    *****
    *****
"""
# 如果循环体是一行*****  执行四次
for i in range(1,5):
    print("*****")
# 如果循环体是一个*
"""
A事件:把打印一个*重复5次 然后换行
B事件:把A事件重复执行4次
"""
for k in range(1,5):
    for i in range(1,6):
        print("*", end = "")
    print()
"""
    *
    **
    ***
    ****
    *****
    ******
"""
for n in range(2,8):
    for i in range(1,n):
        print("*", end = "")
    print()
# 数值上调整
for n in range(1,7):
    for i in range(1, n + 1):
        print("*", end = "")
    print()
"""
    1
    1 2
    1 2 3
    1 2 3 4
    1 2 3 4 5 
    1 2 3 4 5 6
    行之间 递增关系i 1~6
    行内 递增关系 num 1~i
"""
for i in range(1,7):
    for num in range(1,i + 1):
        print(num, end = " ")
    print()
"""
    1 2 3 4 5 6
    1 2 3 4 5
    1 2 3 4
    1 2 3
    1 2
    1
    行之间 递减关系i 6~1
    行内 递增关系 num 1~i
"""
for i in range(6,0,-1):
    for num in range(1,i + 1):
        print(num, end = " ")
    print()
"""
    6
    6 5 
    6 5 4
    6 5 4 3
    6 5 4 3 2
    6 5 4 3 2 1
    行之间 递减关系 i 6~1
    行内 递减关系 num 6~i
"""
for i in range(6,0,-1):
    for num in range(6,i - 1,-1):
        print(num, end = " ")
    print()
"""
    6 5 4 3 2 1
    6 5 4 3 2
    6 5 4 3
    6 5 4
    6 5
    6
    行之间 递增关系 i 1~6
    行内 递减关系 num 6~i
"""
for i in range(1,7):
    for num in range(6,i - 1,-1):
        print(num, end = " ")
    print()

while循环

主要用于未知循环次数,但是已知循环结束条件的情况

举例:向前走,一直碰到墙为止

练习:

 

for i in range(1,8):        //首先第一步判断行与行之间是递增关系
    for n in range(1,8-i):  //从第一行开始每一行会有 n个空格 第一行6 第二行5以此类推
        print(" ",end="")        
    for j in range(-i+1,i):    // 每一行数字满足关系试 y=|x|+1
        print(abs(j)+1,end="")
    print()


 

 for i in range(1,9):                    //行与行之间关系递增
     for k in range(1,9-i):              //每行开始会有空格
         print("    ",end="")
     for j in range(1-i,i):              // 找到数字之间的关系为2**(i-1-|j|)
         num = 2**(i-1-abs(j))
         print("%4d" % (num),end="")     // 因为数字有一位,两位,三位 所以使用格式化输出
     print()

turtle.speed(0)
turtle.pensize(1)
turtle.penup()                                    //定义坐标轴原点位(0,0)
turtle.goto(0,150)                        
turtle.pendown()                                  //画X,Y轴
turtle.goto(0,-150)

turtle.penup()
turtle.goto(-200,0)
turtle.pendown()
turtle.goto(200,0)


sin
turtle.penup()
turtle.color("blue")                            //定义正切函数为蓝色
for x in range(-200,201):                       //x的取值范围为200,200
    turtle.goto(x,30*math.sin((x/50)*math.pi)   //将sin函数的振幅扩大30 定义每25为派/2
    turtle.pendown()                            
cos                                        
turtle.penup()
turtle.color("red")
for x in range(-200, 201):
    turtle.goto(x, 30 * math.cos(x / 50) * math.pi)
    turtle.pendown()

turtle.done()

 

side=20                                  //定义每个方框的边长
turtle.penup()                                
turtle.goto(0,0)                        //建立坐标原点
turtle.pendown()
for c in range(0,9):                    //设置列数为9
    for r in range(0,9):                //行数也为9
        if (c+r)%2==1:                  //找到黑色方块的规律为行号和列号相加为奇数
            turtle.begin_fill()          
            turtle.color("black")        

        turtle.penup()
        turtle.goto(r*side,c*side)      //找到每个小方块的左下角的坐标
        turtle.pendown()
        turtle.left(90)                 //从左下角开始画方框 
        turtle.forward(20)
        turtle.left(90)
        turtle.forward(20)
        turtle.left(90)
        turtle.forward(20)
        turtle.left(90)
        turtle.forward(20)
        turtle.end_fill()
turtle.hideturtle()

turtle.done()

 

side=10                      //定义每个小方格的边长
turtle.penup()
turtle.goto(0,0)               //起始坐标
turtle.pendown()
turtle.speed(0)
for c in range(0,20):
    for r in range(0,20):
        turtle.penup()
        turtle.goto(r*side,c*side)
        turtle.pendown()
        turtle.left(90)
        turtle.forward(side)
        turtle.left(90)
        turtle.forward(side)
        turtle.left(90)
        turtle.forward(side)
        turtle.left(90)
        turtle.forward(side)  //此上都为画小方格
        
turtle.penup()
turtle.goto(100,100)
turtle.color("red")           //将游走线的颜色设为红色
turtle.pensize(2)
turtle.pendown()
turtle.hideturtle()                 
nowX =100                    //中心点坐标
nowY=100
while 0<=nowX<200 and 0<nowY<200:    //while循环 定义游走线边界 
    """ 随机走"""
    Q=random.randint(0,3)            //自定义随机走的路线
    freego=turtle.setheading(Q*90)
    turtle.forward(10)                //定义每次走的长度
    if Q==0:
        nowX+=10
    elif Q==1:
        nowY+=10
    elif Q==2:
        nowX-=10
    else:
        nowY-=10

# 中心点 100,100
turtle.done()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值