Python初步自学知识总结——循环语句(下)

循环嵌套

若一个循环结构中还包含循环结构,就是循环嵌套。
for循环嵌套举例
用for循环嵌套打印矩阵九九乘法表:

#code01.py
for i in range(1,10):
    print('%4d'%i,end = '')
print()

print('-'*36)

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


   1   2   3   4   5   6   7   8   9
------------------------------------
   1   2   3   4   5   6   7   8   9
   2   4   6   8  10  12  14  16  18
   3   6   9  12  15  18  21  24  27
   4   8  12  16  20  24  28  32  36
   5  10  15  20  25  30  35  40  45
   6  12  18  24  30  36  42  48  54
   7  14  21  28  35  42  49  56  63
   8  16  24  32  40  48  56  64  72
   9  18  27  36  45  54  63  72  81

while循环嵌套举例
用while循环嵌套打印一张左下直角三角形九九乘法表:

#code02.py
i=1
while i<=9:
    print('%4d'%i,end = '')
    i+=1
print()

print('-'*36)

k=1
while k<=9:
    j=1
    while j<=k:
        print('%4d'%(k*j),end = '')
        j+=1
    print()
    k+=1


   1   2   3   4   5   6   7   8   9
------------------------------------
   1
   2   4
   3   6   9
   4   8  12  16
   5  10  15  20  25
   6  12  18  24  30  36
   7  14  21  28  35  42  49
   8  16  24  32  40  48  56  64
   9  18  27  36  45  54  63  72  81

循环中断与短路控制

循环中断与短路分别由break和continue语句实现。
(1)循环中断语句break:循环在某一轮执行到某一语句时,已经有了结果,不需要再继续循环,就用这个语句跳出(中断)循环。
(2)循环语句continue:某一轮循环还没有执行完,已经有了这一轮的结果,后面的语句不必要执行,需要进入下一轮时,就用这个语句短路该层后面还没有执行的语句,直接跳到循环起始处,进入下一轮循环。
需要注意的是,在循环嵌套结构中,它们只对本层循环有效。
1.循环中断语句break
break语句的作用是“跳出本层循环结构”
测试一个数是否是素数:

#code03.py
j=0
n =int(input('输入一个自然数:'))
for i in range(2,n-1):
    if n%i==0:
        print('%d不是素数。'%(n))
        j=1
        break
if j==0:
    print('%d是素数。'%(n))


输入一个自然数:9483
9483不是素数。

输入一个自然数:17
17是素数。

也可以优化算法,把循环范围设置为range(2,int(sqrt(n))+1):

#code04.py
from math import sqrt
j=0
n =int(input('输入一个自然数:'))
for i in range(2,int(sqrt(n))+1):
    if n%i==0:
        print('%d不是素数。'%(n))
        j=1
        break
if j==0:
    print('%d是素数。'%(n))



输入一个自然数:9483
9483不是素数。

输入一个自然数:17
17是素数。

2.循环短路语句continue
continue语句的作用是结束当前重复体,而不是跳出循环。当某一轮循环还没有执行完,已经有了这一轮的结果,后面的语句不必要执行,需要进入下一轮时,就用这个语句短路该层后面还没有执行的语句,直接跳到循环起始处,进入下一轮循环。

按照埃拉托色尼筛选法,找到并打印出某个区间中的全部素数。

#code05.py
from math import sqrt

naturalNumber1 = int(input('请输入一个自然数:'))
naturalNumber2 = int(input('请输入另一个自然数:'))
if naturalNumber1 > naturalNumber2:
    naturalNumber1,naturalNumber2 = naturalNumber2,naturalNumber1

print('{}~{}间的素数依次为:'.format(naturalNumber1,naturalNumber2),end = '\t')

for n in range(naturalNumber1,naturalNumber2):
    isPrimer = True
    for i in range(2,int(sqrt(n)+1)):
        if n%i == 0:
            isPrimer = False
            break
    if isPrimer == False:
        continue
    else:
        print(n,end = '\t')


请输入另一个自然数:100
3~100间的素数依次为:	3	5	7	11	13	17	19	23	29	31	37	41	43	47	53	59	61	67	71	73	79	83	89	97	

你可能感兴趣的:(Python初步自学知识总结——循环语句(下))