Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2.6 判断语句

流程是指程序运行时语句的执行次序。Python包含了三种基本流程控制结构:顺序结构分支结构循环结构
顺序结构是从上往下的顺序逐剧执行的结构,先执行位置在前的语句、后执行位置在后的语句。本章主要讲授分支结构循环结构

分支结构又称选择结构,它是一种在两条或更多条执行路径中选择一条执行的语句控制结构。

(一)单分支结构

if 语句单分支结构的语法形式为:

if(条件表达式):
    语句块
process01

条件表达式的逻辑值为True则执行语句块,否则不执行语句块if语句的条件表达式之后需要添加冒号(:),语句块内的每行语句均需要通过缩进表示同属一个语句块。

运行下述例子:

grade = int(input('输入成绩后,按【回车键】确认')) #Python键盘输入默认为字符串,这里做类型转换,把字符串转成整数
if(grade < 60):                                   # 如果输入小数,也就是浮点数,使用float()来转换
    print('很不幸,你挂科了!')
输入成绩后,按【回车键】确认 50
很不幸,你挂科了!

练习:if语句

如果输入成绩在60分和80分之间,请打印“良好”



(二)双分支结构

if 语句双分支结构的语法形式为:

if(条件表达式):
    语句块1
else:
    语句块2
process02

条件表达式的逻辑值为True,则执行语句块1;否则执行语句块2

grade = int(input('输入成绩后,按【回车键】确认'))
if(grade < 60):
    print('很不幸,你挂科了!')
else:                                         # 注意else与if对齐
    print('恭喜!通过考试')
输入成绩后,按【回车键】确认 61
恭喜!通过考试

(三)多分支结构

if语句多分支结构的语法如下:

if(条件表达式1):
    语句块1
elif(条件表达式2):
    语句块2
    ...
elif(条件表达式n):
    语句块n
else:
    语句块n+1
process03
grade = int(input('输入成绩后,按【回车键】确认'))
if(grade < 60):
    print('很不幸,你挂科了!')
elif(grade >= 60 and grade < 80):                          # 注意elif与if对齐
    print('你及格了!')
elif(grade >= 80 and grade < 90):                          # 注意elif与if对齐
    print('表现不错!')
elif(grade >= 90 and grade<=100):                          # 注意elif与if对齐
    print('优秀!')
else:
    print('您输入的成绩有误!')
输入成绩后,按【回车键】确认 91
优秀!

练习:计算小明的体重

小明身高1.75米,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:

  • 低于18.5:过轻

  • 18.5-25:正常

  • 25-28:过重

  • 28-32:肥胖

  • 高于32:严重肥胖

Tips: 用if-elif判断并打印结果



练习:计算课程总成绩

相信很多老师在授课的第一节课都会告诉学生,本学期的考核和成绩评定方式,例如:

  • 课程总成绩=平时成绩(30%)+测试(70%)

  • 平时成绩=出勤(10%)+课内作业(20%)

  • 测试=期中实验报告(10%)+ 期末实验报告(60%)

  • 出勤不满总出勤周的1/3,无法参加期末考试

现在学校要求我们编写一个程序,让学生输入他本学期的16周的出勤次数、平时作业成绩、期中测验分数和期末卷面成绩来计算出他的总成绩。请告知一下同学他的分数:

student_01 = {'name':'zhangxiaoxian', #姓名
              'attendance_numbers': 14, #出勤数
             'homework_score': 75,  #平时作业分数
             'mid_term_exam_score': 80, #期中考试分数
             'final_term_score': 85}  #期末考试分数

student_02 = {'name':'wangpeng', 
              'attendance_numbers': 3, 
             'homework_score': 80,
             'mid_term_exam_score': 90,
             'final_term_score': 95}

student_03 = {'name':'lifeng', 
              'attendance_numbers': 12, 
             'homework_score': 60,
             'mid_term_exam_score': 70,
             'final_term_score': 75}