亲宝软件园·资讯

展开

Python 循环结构

史迪崽儿 人气:0

前言:

在编写代码时如果能够简化一个程序,把重复的代码形成公共部分,利用语法来控制,对代码进行循环往复的执行,这就形成了循环结构逻辑。

一、While循环

While循环的语法格式如下:

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

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

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

count = 1        #计数器
sum0 = 0        #统计和值,初始值为0
while count <= 100 :
    sum0 += count
    count += 1
print(sum0)

运行结果如下:

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

二、While…else…循环

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

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

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

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

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的累加和,代码如下:

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循环就会这样写:

password = input("输入密码:")
for i in range(1,3,1) :
    if password == "000000" :
        print("密码正确,您可以取款了")
        break
    else :
        input("密码错误,请再一次输入密码:")
else: print("密码错误,卡被吞")

运行结果如下:

五、循环体结束语句

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

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

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

for i in range(1,11) :
    if i%2==0 :
        continue
    print(i)

运行如下:

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

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两个数交叉相乘的效果,就必须依靠循环嵌套

代码如下:

for i in range(1,10) :
    for j in range(1,10) :
        print("%d*%d=%d"%(i,j,i*j))

运行结果如下:

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

修改后的代码如下:

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,以此类推才能实现要求的乘法表。具体方法是当外层循环比内层循环数字小时,退出本层循环。

最终代码如下:

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()

运行结果如下:

加载全部内容

相关教程
猜你喜欢
用户评论