Python 程序设计入门(022)—— 循环结构程序设计(3):循环的嵌套

在编程时,循环语句的嵌套是很常见的,循环嵌套是指在一个循环语句中又包含另一个循环语句。例如:在 for 循环中嵌入另一个 for 循环或 while 循环,在 while 循环中嵌入另一个 while 循环或 for 循环等。

一、输出乘法口诀

1、使用双层 for 循环

代码如下:

for i in range(1,10):
    for j in range(1,i+1):
        print("{:1d}*{:1d}={:2d}".format(j, i, i*j),end = "\t")
    print()

程序执行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
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	

2、使用双层 while 循环

代码如下:

i = 1
while i<10:
    j = 1
    while j <= i:
        print("{:1d}*{:1d}={:2d}".format(j, i, i*j),end = "\t")
        j += 1
    print()
    i += 1
    
程序执行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
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	

二、输出 1000 以内的素数

1、使用 for 循环中嵌套 while 循环

代码如下:

list1 = [2]
for i in range(3,1000):
    j = 2
    while j <= int(i ** 0.5) + 1:
        if i % j == 0:
            break
        else:
            j += 1
    if j >= int(i ** 0.5) + 1:
        list1.append(i)
for item in range(len(list1)):
    print("{:6d}".format(list1[item]),end = "")
    if (item + 1) % 10 == 0:
        print()
            
程序执行结果如下:
============================= RESTART: C:\Python\Python38\First.py =============================
     2     3     5     7    11    13    17    19    23    29
    31    37    41    43    47    53    59    61    67    71
    73    79    83    89    97   101   103   107   109   113
   127   131   137   139   149   151   157   163   167   173
   179   181   191   193   197   199   211   223   227   229
   233   239   241   251   257   263   269   271   277   281
   283   293   307   311   313   317   331   337   347   349
   353   359   367   373   379   383   389   397   401   409
   419   421   431   433   439   443   449   457   461   463
   467   479   487   491   499   503   509   521   523   541
   547   557   563   569   571   577   587   593   599   601
   607   613   617   619   631   641   643   647   653   659
   661   673   677   683   691   701   709   719   727   733
   739   743   751   757   761   769   773   787   797   809
   811   821   823   827   829   839   853   857   859   863
   877   881   883   887   907   911   919   929   937   941
   947   953   967   971   977   983   991   997

2、使用双层 for 循环

代码如下:

list1 = [2]
for i in range(3,1000):
    for j in range(2,int(i ** 0.5) + 2):
        if i % j == 0:
            break
    if j >= int(i ** 0.5) + 1:
        list1.append(i)
for item in range(len(list1)):
    print("{:6d}".format(list1[item]),end = "")
    if (item + 1) % 10 == 0:
        print()
                    
程序执行结果如下:
============================== RESTART: C:\Python\Python38\First.py ==============================
     2     3     5     7    11    13    17    19    23    29
    31    37    41    43    47    53    59    61    67    71
    73    79    83    89    97   101   103   107   109   113
   127   131   137   139   149   151   157   163   167   173
   179   181   191   193   197   199   211   223   227   229
   233   239   241   251   257   263   269   271   277   281
   283   293   307   311   313   317   331   337   347   349
   353   359   367   373   379   383   389   397   401   409
   419   421   431   433   439   443   449   457   461   463
   467   479   487   491   499   503   509   521   523   541
   547   557   563   569   571   577   587   593   599   601
   607   613   617   619   631   641   643   647   653   659
   661   673   677   683   691   701   709   719   727   733
   739   743   751   757   761   769   773   787   797   809
   811   821   823   827   829   839   853   857   859   863
   877   881   883   887   907   911   919   929   937   941
   947   953   967   971   977   983   991   997

3、内层 for 循环使用 for 表达式

代码如下:

list1 = [2]
for i in range(3,1000):
    if 0 not in [i % j for j in range(2,int(i ** 0.5) + 2)]:
        list1.append(i)
for item in range(len(list1)):
    print("{:6d}".format(list1[item]),end = "")
    if (item + 1) % 10 == 0:
        print()
                            
程序执行结果如下:
============================ RESTART: C:\Python\Python38\First.py =============================
     2     3     5     7    11    13    17    19    23    29
    31    37    41    43    47    53    59    61    67    71
    73    79    83    89    97   101   103   107   109   113
   127   131   137   139   149   151   157   163   167   173
   179   181   191   193   197   199   211   223   227   229
   233   239   241   251   257   263   269   271   277   281
   283   293   307   311   313   317   331   337   347   349
   353   359   367   373   379   383   389   397   401   409
   419   421   431   433   439   443   449   457   461   463
   467   479   487   491   499   503   509   521   523   541
   547   557   563   569   571   577   587   593   599   601
   607   613   617   619   631   641   643   647   653   659
   661   673   677   683   691   701   709   719   727   733
   739   743   751   757   761   769   773   787   797   809
   811   821   823   827   829   839   853   857   859   863
   877   881   883   887   907   911   919   929   937   941
   947   953   967   971   977   983   991   997

三、判断 1-1000 之间的整数中,数字 1 出现的次数

代码如下:

s = 0
for i in range(1,1001):
    for item in str(i):
        if item == "1":
            s += 1
print(s)
                            
程序执行结果如下:
========================= RESTART: C:\Python\Python38\First.py ==============================
301
08-17 10:06