值得收藏!16段代码入门Python循环语句( 二 )


  • 代码清单3:嵌套for语句
students = ['小明', '小红']subjects = ['语文', '数学'] sum1 = []avg = []for i in students:print ('开始录入%s的考试成绩!'%i)sum = 0 for j in subjects:print('请输入%s成绩:'%j)score = int(input()) sum += score average = sum / 2 avg.Append(average) sum1.append(sum)print(students, '的总分依次是', sum1, ',', '平均分依次是', avg)print('完成成绩录入!') 输出结果:
开始录入小明的考试成绩!请输入语文成绩:97请输入数学成绩:90开始录入小红的考试成绩!请输入语文成绩:89请输入数学成绩:100['小明', '小红'] 的总分依次是 [187, 189] , 平均分依次是 [93.5, 94.5]完成成绩录入!理论上,for循环也可以无限嵌套,但并不推荐 。
02 whilewhile语句是Python中最常用的递归结构 。区别于for循环,while循环结构包含条件判断式,是一种条件循环,属于当型循环 。
while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句 。也可以在结尾处包含一个else代码块,它与while代码块是同级的,组成while-else的形式 。while语句的基本语法格式如下 。
while 条件表达式: 操作语句 1 操作语句 2 while语句常用的参数及其说明如下所示:
  • 条件表达式:接收布尔表达式,表示判断条件是否成立 。无默认值
  • 操作语句:接收操作语句,表示执行一段代码 。无默认值
执行while语句时,只要顶部的条件表达式返回真值,就一直执行while部分嵌套的递归代码,当条件表达式返回假值时,不再执行操作语句,程序跳出while结构 。
while语句的基础使用方法如代码清单4所示 。
  • 代码清单4:while语句
sum = 0n = 99while n > 0: sum += n n -= 2print(sum)输出结果:2500
如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的 。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体 。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体 。
如果布尔表达式始终返回1,while语句就变成无限循环,如代码清单5所示 。
  • 代码清单5:while语句无限循环
# 布尔表达式为常数1,始终为真值while 1: print('循环')输出结果:
循环循环… # 布尔表达式每次递归运算都为2,始终为真值x, y = 2, 1while x / y: print('循环') x = x * 2 y = y * 2 输出结果:
循环循环… 运行代码清单5,将会不断打印出“循环” 。代码清单5展示了制造无限循环的两种方式,既可以在while后写入一个固定的真值,也可以写入一个一直生成真值的表达式 。要终止无限循环,可以使用快捷键Ctrl+C中断循环的执行,也可以用循环终止语句,这将在下文中介绍 。
灵活地利用while语句中的布尔表达式及代入表达式的递归值,可以实现特别的功能,如代码清单6所示 。
  • 代码清单6:while语句实现str截取
string = 'abcd'while string: print(string)# 该语句的递归计算是,每次从str的第2个字符开始截取 string = string[1:] 输出结果:
abcdbcdcdd 代码清单6包含一个自减迭代值,它并不通过明显的运算符实现自减,而是利用索引法则,x变量一直从str中第2个值截取至结尾,每次都将位于str最前面的字符截取掉,最终只剩下一个字符时,再次截取就只有空的结果,布尔表达式返回0,循环终止 。
通过代码清单5和代码清单6可以看到,灵活地利用递归式,可以实现程序流向的控制 。
while循环同样可以使用嵌套,嵌套的while循环实现成绩录入系统如代码清单7所示 。
  • 代码清单7:嵌套while语句
j = 1while j <= 2: sum = 0 i = 1 name = input('请输入学生姓名:') while i <= 2: print ('请输入第%d门的考试成绩: '%i) sum += int(input()) i += 1 avg = sum / (i-1) print(name, '的平均成绩是%d'%avg) j += 1print('学生成绩输入完成!') 输出结果:
请输入学生姓名:小明请输入第1门的考试成绩: 98请输入第2门的考试成绩: 88小明 的平均成绩是93请输入学生姓名:小红请输入第1门的考试成绩: 65请输入第2门的考试成绩: 100小红 的平均成绩是82学生成绩输入完成!代码清单7的第1层while语句用于录入人名,第2层则在各人名下录入多门成绩,布尔表达式决定录入的人数和课程数 。


推荐阅读