循环结构

一、While循环

While循环的语法格式如下:

while 条件表达式 :
    代码段(包含改变计数器值的语句)

while 关键词后面紧跟的条件表达式决定了循环是够进行下去。

下面用while语句实现求1~100的累加和,代码如下:

1

2

3

4

5

6

count = 1        #计数器

sum0 = 0        #统计和值,初始值为0

while count <= 100 :

    sum0 += count

    count += 1

print(sum0)

运行结果如下:

While循环的语法要点需要做的就是以下三件事:

  • 1、定义计数器的初始值,这个计数器可以计数,也可以用作求解问题的数字处理。
  • 2、While循环条件保证计数器在一定条件下退出循环。
  • 3、循环做的事情放在循环体里,同是不要忘记计数器的叠加效果。

二、While…else…循环

While…else…的语法格式如下:

while 条件表达式 :
    代码块1
    改变计数器的值
else :
    代码块2

这个格式比原来基本的while格式读了一个else语句,器质性流程也多了一步流程,即当while循环体正常执行完后执行else代码块中的内容。

下面用while语句实现银行卡吞卡验证,代码如下:

1

2

3

4

5

6

7

8

9

10

count = 1

password = input("输入密码:")

while count < 3 :

    if password == "000000" :

        print("密码正确,您可以取款了")

        break

    else :

        input("密码错误,请再一次输入密码:")

    count += 1

else: print("密码错误,卡被吞")

运行结果如下:

break用来推出循环体,不再执行本层循环。

三、for循环

while循环和for循环用于处理不同的问题,while应用在不知道循环次数的情况下,for应用在确定循环次数的情况下。

for循环语句的格式如下:

for 临时变量 in 可迭代对象 :
    循环体

执行过程就是将每一个可迭代对象中的每一个元素复制给临时变量,再执行循环体。当可迭代对象中的元素全部遍历完后for循环就停止运行。

如用for循环求1~100的累加和,代码如下:

1

2

3

4

sum0 = 0

for count in range(1,101,1) :

    sum0 += count

print(sum0)

以上代码看上去比while循环简单一些,所以变成习惯上使用for循环。

注意: Python的区间左边可以等于,右边一定不等于,即左闭右开。

range函数可以接受3个参数,range(start,stop,step)产生一个从start开始到stop结束的一个整数序列,step是步长。

四、for…else…循环

While…else…的语法格式如下:

for 临时变量 in 可迭代对象 :
    循环体
else :
    代码块2

当for循环体正常执行完后执行else代码块中的内容,否则不会执行else中的代码。

如上述银行卡吞卡使用for循环就会这样写:

1

2

3

4

5

6

7

8

password = input("输入密码:")

for i in range(1,3,1) :

    if password == "000000" :

        print("密码正确,您可以取款了")

        break

    else :

        input("密码错误,请再一次输入密码:")

else: print("密码错误,卡被吞")

运行结果如下:

五、循环体结束语句

Python的循环逻辑控制是依靠for和while这两种语句来实现的。但是,有时不需要把循环执行完,条件合适时需要直接退出循环,这时可以使用break语句。还有一种需求,不需要退出整个循环,而是退出本次循环,可以使用continue语句。这两个语句的区别如下:

  • 1、break用于完全结束一个循环,跳出循环体之行循环后面的语句。
  • 2、continue只是终止本次循环,接着还之行后面的循环。

下面经过具体实例来了解break和continue的使用:

  • 循环打印奇数

如果判断是偶数,进入下一次循环,如果判断是奇数,直接打印。

1

2

3

4

for i in range(1,11) :

    if i%2==0 :

        continue

    print(i)

运行如下:

  • 循环打印闰年

循环找出2020-2051年中的第一个闰年。

1

2

3

4

for year in range(2020,2051) :

    if year%4==0 and year%100!=0 or year%400==0 :

        print(year)

        break

运行如下:

六、嵌套循环

以打印九九乘法表为例:

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    

分析以上九九乘法表的思路,从输出格式中可以看到数字是从1乘1一直到9乘9,要形成1到9两个数交叉相乘的效果,就必须依靠循环嵌套

代码如下:

1

2

3

for i in range(1,10) :

    for j in range(1,10) :

        print("%d*%d=%d"%(i,j,i*j))

运行结果如下:

可以看出以上代码打印的是竖向的乘法表,原因是目前的结束符是换行,修改结束符即可。现在把结束符换成“/t”制表符。

修改后的代码如下:

1

2

3

4

for i in range(1,10) :

    for j in range(1,10) :

        print("%d*%d=%d"%(i,j,i*j),end="\t")

    print()

运行结果如下:

此时每一行的的第一个字符相等,与结果的每一列字符相等,所以输出可以将i和j互换。并且,应该是第一行只留11,第二行只留12,2*2,以此类推才能实现要求的乘法表。具体方法是当外层循环比内层循环数字小时,退出本层循环。

最终代码如下:

1

2

3

4

5

6

for j in range(1,10) :

    for i in range(1,10) :

        if i > j :

            continue

        print("%d * %d = %d"%(i,j,i*j),end="\t")

    print()

运行结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值