学完条件控制语句和循环控制语句后,在这里就会把“语言”的精妙之处进行讲解,也就是语句的嵌套。我们在看别人代码的时候总会对一些算法拍案叫绝,里面包含精妙和精密的逻辑分析。语句的嵌套也就是在循环体内可以嵌入条件结构语句,在条件结构语句中也可以嵌入循环体,进行互为条件的计算,计算出包罗万千的个中算法和得到想要的结果。
另外,我们在这里要补充4个关键字,也就是在语句嵌套中起到“调味剂”的作用。
(1) break
作用:跳出for和while循环,目的就是为了结束循环。
注意:它只能跳出距离它最近的那一层循环。
(2) continue
作用:跳出当前循环中的剩余语句,然后继续下一次循环。
注意:跳出距离最近的循环。
(3) pass
作用:不做任何事情,起到占位的作用
(4) exit(code)
作用:结束整个程序。code = 退出记录号码。也可以默认不写。
我们举几个例子,对于上面的语句嵌套进行示例展示:
举例1:break举例:循环遍历0-9个数,如果循环到5的位置跳出这个循环,用for循环。
1 # 举例1 2 # break 语句举例 3 for i in range(1, 10, 1): 4 print(i, end="*") 5 if i == 5: 6 # 如果等于5,跳出这个循环 7 break 8 # 注意:这里的break和if组合,嵌套到for循环体中 9 # 输出结果:1*2*3*4*5*
举例2:break举例:当循环到3的时候,跳出循环并打印"Thomas is a good man",用while循环。
1 # 举例2 2 # while 语句循环中的使用 3 # 当运算到3这个数值跳出循环,并打印“Thomas is a good man" 4 num = 1 # 初始化计数器 5 while num <= 10: 6 print(num) 7 num += 1 8 if num == 4: 9 print("sunck is a good man") 10 break 11 # 输出结果: 12 # 1 13 # 2 14 # 3 15 # sunck is a good man
举例3: continue举例:1-10共10个数,每打印一个数后面跟一个"***"号,但当计算到3的时候跳过打印星号,然后继续执行到循环结束,用for循环实现。
1 # 举例3 2 for i in range(1, 10, 1): 3 print(i) 4 if i == 3: 5 continue 6 print("****") 7 # print("&") 8 # 输出结果: 9 # 1 10 # **** 11 # 2 12 # **** 13 # 3 14 # 4 # 我们注意到,循环到3的时候跳过打印星号,然后继续执行3直到循环结束 15 # **** 16 # 5 17 # **** 18 # 6 19 # **** 20 # 7 21 # **** 22 # 8 23 # **** 24 # 9 25 # ****
举例4:同样上面的例子,用while循环实现。
1 # 举例4 2 num = 1 3 while num < 10: 4 print(num) 5 if num == 3: 6 num += 1 7 continue 8 num += 1 9 print("****") 10 # 输出结果: 11 # 输出结果: 12 # 1 13 # **** 14 # 2 15 # **** 16 # 3 17 # 4 # 我们注意到,循环到3的时候跳过打印星号,然后继续执行3直到循环结束 18 # **** 19 # 5 20 # **** 21 # 6 22 # **** 23 # 7 24 # **** 25 # 8 26 # **** 27 # 9 28 # ****
举例5:输入一个大于0的整数,适用pass去观察显示结果。
1 # 举例5: 2 num = int(input("请输入一个大于0的整数:")) 3 if num < 10: 4 print("You are right") 5 else: 6 pass 7 # 我们在此输入:11 8 # 输出结果: 9 # 请输入一个大于0的整数:11 10 # 空 #没有任何结果
举例6:同样上面的题目,输入15和21,用exit(),去观察显示结果。
1 # 举例6: 2 num = int(input("请输入一个大于0的整数:")) 3 if num < 10: 4 print("You are right") 5 elif num >=10 and num < 20: 6 exit(10) # 10的标记位 7 else: 8 exit(12) 9 # 如果输入:15 10 # 显示exit的位置为10的标记位 11 # 输出结果: 12 # 请输入一个大于0的整数:15 13 # 14 # Process finished with exit code 10 # 10的标记位 15 16 # 如果输入:20 17 # 显示的位置为12的标记位 18 # 输出结果: 19 # 请输入一个大于0的整数:20 20 # 21 # Process finished with exit code 12 # 12的标记位
举例7:巧妙运行标记,一般默认标记变量用flag(随便这个),用布尔函数去控制循环体。输入50,跳出这个循环体。
1 # 举例7 2 # 可以用布尔型进行控制 3 flag = True 4 age = 50 5 while flag: 6 user_input_age = int(input("Age is : ")) 7 if user_input_age == age: 8 print("You are right!", end=" ") # 光标回复到最后一个位置 9 flag = False 10 elif user_input_age > age: 11 print("is bigger!, try again!", end=" ") # 光标回复到最后一个位置 12 else: 13 print("is samller, try again", end=" ") # 光标回复到最后一个位置 14 print("程序结束!", end=" ") 15 # 输入50,让程序停止运行 16 # 输出结果: 17 # Age is : 50 18 # 跳出程序
举例8:运用两次while循环,每行打印0-1-2-3-4-5-6-7-这样的一排,然后在前面添加枚举到第几个了。默认6次。
1 # 举例8 2 # 两层while循环 3 num1 = 0 4 while num1 <= 5: 5 print(num1, end="_") 6 num2 = 0 7 while num2 <= 7: 8 print(num2, end="-") 9 num2 += 1 10 num1 += 1 11 print(end=" ") 12 # 输出结果: 13 # 0_0-1-2-3-4-5-6-7- 14 # 1_0-1-2-3-4-5-6-7- 15 # 2_0-1-2-3-4-5-6-7- 16 # 3_0-1-2-3-4-5-6-7- 17 # 4_0-1-2-3-4-5-6-7- 18 # 5_0-1-2-3-4-5-6-7-
举例9:经典案例99乘法表。
1 # 举例9 2 # 做一个九九乘法表 3 count = 1 4 print("99乘法表如下:") 5 while count <= 9: 6 num1 = 1 7 while num1 <= count: 8 num2 = count 9 if count == 3 and num1 == 2 or num1 == 3: 10 print(num1, "*", num2, "=", (num1 * num2), end=" ") 11 elif count == 4 and num1 == 2 or num1 == 4: 12 print(num1, "*", num2, "=", (num1 * num2), end=" ") 13 else: 14 print(num1,"*",num2,"=", (num1 * num2), end=" ") 15 num1 += 1 16 print(end=" ") 17 count += 1 18 # 99乘法表如下: 19 # 1 * 1 = 1 20 # 1 * 2 = 2 2 * 2 = 4 21 # 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 22 # 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 23 # 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 24 # 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 25 # 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 26 # 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 27 # 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
举例10:任意输入一个高度,一个宽度,用循环实现打印一个矩形。
1 # 举例10 2 # 任意指定一个矩形的高度和宽度,并生成这个矩形 3 # height 高度 Width 宽度 4 height = int(input("请输入高度,Height= ")) 5 width = int(input("请输入宽度,Width= ")) 6 print("矩形图形如下: ") 7 num_heigth = 1 8 while num_heigth <= height: 9 num_width = 1 10 while num_width <= 11 print("*", end="") 12 num_width += 1 13 print() 14 num_heigth += 1 15 print("结果为{矩形的高度为:%d 矩形的宽度为:%d}" % (height, width)) 16 # 输出结果: 17 # 请输入高度,Height= 10 18 # 请输入宽度,Width= 20 19 # 矩形图形如下: 20 # ******************** 21 # ******************** 22 # ******************** 23 # ******************** 24 # ******************** 25 # ******************** 26 # ******************** 27 # ******************** 28 # ******************** 29 # ******************** 30 # 结果为{矩形的高度为:10 矩形的宽度为:20}
举例11:与上面类似,输入一个行数,打印一个等腰三角形
1 # 举例11 2 # 输出一个直角三角形,用户指定输出行数 3 # * 4 # ** 5 # *** 6 # **** 7 num1 = int(input("请输入要生成的直角三角形的行数: ")) 8 line = 0 9 num = 1 10 while line < num1: # 打印多少行 11 colum = 0 # 重新初始化循环再次执行 12 while colum < num: # 每行打印多少个星 13 print("*", end="") 14 colum += 1 15 print() 16 line += 1 17 num += 1 18 # 输出结果: 19 # 请输入要生成的直角三角形的行数: 10 20 # * 21 # ** 22 # *** 23 # **** 24 # ***** 25 # ****** 26 # ******* 27 # ******** 28 # ********* 29 # **********
举例12:与上面类似,输入一个行数,打印一个倒等腰三角形。
1 # 举例12 2 # 输出一个倒直角三角形,用户指定输出行数 3 # **** 4 # *** 5 # ** 6 # ** 7 # * 8 num1 = int(input("请输入要生成的直角三角形的行数: ")) 9 line = 0 10 num = num1 11 while line < num1: # 打印多少行 12 colum = 0 # 重新初始化循环再次执行 13 while colum < num: # 每行打印多少个星 14 print("*", end="") 15 colum +=1 16 num -= 1 17 print() 18 line += 1 19 # 输出结果: 20 # 请输入要生成的直角三角形的行数: 11 21 # *********** 22 # ********** 23 # ********* 24 # ******** 25 # ******* 26 # ****** 27 # ***** 28 # **** 29 # *** 30 # ** 31 # *
总结:
关于语句的嵌套,有些逻辑技巧最好实践中进行总结,详细自己也能写出:即简洁、又符合逻辑、又美观而且精妙的程序结构来,要审视这是一种美。