2020年3月19日 第三章 程序控制结构-2

第三章 程序控制结构-2

3.2 双路分支结构

双路分支结构是一种二选一,即一个条件分两种情形处理

if <条件表达式>:
  <语句块1>
else:
  <语句块2>

语法格式

  • 当<条件表达式>为True时,执行<语句块1>,否则执行<语句块2>。
  • <条件表达式>可以是关系表达式、逻辑表达式、算术表达式等。
  • <语句块>前有缩进,冒号:不能缺省。

【例3-7】 改写【例3-1】程序,输入一个整数,如果是偶数则输出“这是个偶数”,否则输出这是个“奇数”

#例3-1
#E3-1-1.py
N=int(input("请输入一个整数:"))
if N%2==0:
  print("这是个偶数")

#例3-7
#E3-7.py
N=int(input("请输入一个整数:"))
if N%2==0:
  print("这是个偶数")
else:
  print(“这是个奇数")

【例3-8】游戏猜数字,改写【例3-5】程序:随机产生一个0-10间的整数,玩家通过键盘输入一个数竞猜,若猜中,则输出“恭喜你猜对啦!”,否则输出“很遗憾,没有猜对哟!”

#例3-5
#E3-5.py
from random import *
num=randint(0,10)
x=int(input("请输入一个数:"))
if num==x:
  print("恭喜你猜对啦!")
print("随机数是:",num)

#例3-8
#E3-8.py
from random import *
num=randint(0,10)
x=int(input("请输入一个数:"))
if num==x:
  print("恭喜你猜对啦!")
else:
  print("很遗憾,没有猜对哟!")
print("随机数是:",num)

【例3-9】改写【例3-6】登录程序:用户通过键盘输入用户名和密码,如果输入的用户名为空,输出“用户名不能为空”;如果输入的密码为空,输出“密码不能为空”;如果输入的用户名为“abc”,并且密码为”123”,输出“欢迎进入本系统”,否则输出“用户名或密码错误”

#例3-6
#E3-6.py
userName=input("请输入用户名:")
passWord=input("请输入密码:")
if userName=="":
  print("用户名不能为空")
if passWord=="":
  print("密码不能为空")
if userName=="abc" and passWord=="123":
  print("欢迎进入本系统")

#例3-9
#E3-9.py
userName=input("请输入用户名:")
passWord=input("请输入密码:")
if userName=="":
  print("用户名不能为空")
if passWord=="":
  print("密码不能为空")
if userName=="abc" and passWord=="123":
  print("欢迎进入本系统")
else:
  print("用户名或密码错误")

【试一试】编写程序计算 y = |x^2 - 25|^0.5

提示:
条件(1) 与(2) ,哪个放在if 后面做为if的条件表达式?

  1. x<=-5或x>=5
  2. -5
#test1.py
# 方法1
import math
x=eval(input("输入x:"))
if -5=5:
  y=math.sqrt(x*x-25)
else:
  y=math.sqrt(25-x*x)   
print("y=",y)

# x=int(input("输入x:")))

【试一试】编写程序,输入一个数,利用turtle库绘制画笔大小为3,半径为100的圆形。并且当输入的数是偶数时,填充颜色为蓝色;当输入的数是奇数时,填充颜色为红色。

提示:
(1)turtle库中有关函数
画圆 circle(),画笔大小pensize(),填充fillcolor(),开始填充begin_fill(),结束填充end_fill()
(2) 判断一个数是否是偶数的条件表达式 N%2==0

#test2.py
from turtle import *
N=int(input("N="))
if N%2==0:
  fillcolor("blue")
else:
  fillcolor("red")
pensize(3)
hideturtle()
begin_fill()
circle(100)
end_fill()

思考:

  • hideturtle()函数的作用是什么?
  • if…else…语句是否可以放在程序的其它位置?
  • 能否改写程序,用input函数分别输入N,画笔大小,圆半径的值。

3.2 双路分支结构-扩展

if <条件表达式>:
  <表达式1>
else:
  <表达式2>

<表达式1> if <条件表达式> else <表达式2>

功能:

  • 当条件表达式为True时,执行表达式1,否则执行表达式2
#例3-8
#E3-8.py
from random import *
num=randint(0,10)
x=int(input("请输入一个数:"))
if num==x:
  print("恭喜你猜对啦!")
else:
  print("很遗憾,没有猜对哟!")
print("随机数是:",num)
# 可写成print("恭喜你猜对啦!") if num==x else print("很遗憾,没有猜对哟!")
#例3-7
#E3-7.py
N=int(input("请输入一个整数:"))
if N%2==0:
  print("这是个偶数")
else:
  print("这是个奇数")
# 可写成print(“这是个偶数”)  if  N%2==0 else print(“这是个奇数")

3.3 多路分支结构

if <条件表达式1>:
  <语句块1>
elif <条件表达式2>:
  <语句块2>
……
elif <条件表达式n>:
  <语句块n>
[else:
  <语句块n+1>]

3.3 多路分支结构

【例3-10】用多路分支结构改写【例3-4】,即输入腋下体温值t,根据如下情况分别输出:

t<36.1输出:您的体温偏低
36.1<=t<=37.2 输出:您的体温正常
37.3

#E3-4.py
t=eval(input("请输入体温值:"))
if t<36.1:
  print("您的体温偏低")
if 36.1<=t<=37.2:
  print("您的体温正常")
if 37.3

思考:

  • 上面两个方法在程序的执行效率上会有不同吗?
  • 在使用多路分支结构时,是不是所有情况下,最后一个分支都可以是用elif 或 else?

【例3-11】输入学生成绩 ,根据成绩进行分类:

90分以上优秀
80~89分 良好
70~79分 中等
60~69分 及格
低于60分不及格

#E3-11.py
score=eval(input("成绩:"))
if score>=90:
  print("优秀")
elif score>=80:
  print("良好")
elif score>=70:
  print("中等")
elif score>=60:
  print("及格")
else:
  print("不及格")

课堂小结

  • 单路分支结构
if  <条件表达式>:
  <语句块>
  • 双路分支结构
if  <条件表达式>:
  <表达式1>
else:
  <表达式2>
  • 多路分支结构
if <条件表达式1>:
  <语句块1>
elif <条件表达式2>:
  <语句块2>
……
elif <条件表达式n>:
  <语句块n>
[else:
  <语句块n+1>]

课后作业

1.新建程序文件 “姓名-3-1.py”,从键盘输入一个字符,赋值给变量ch,判断它是英文字母、数字还是其他字符。
提示:
分析下列三种情况

  • 英文字母:
    ch>="a" and ch<="z" or ch>="A" and ch<="Z"
  • 数字字符:ch>="0"and ch<="9"
  • 其他字符

2.中国古代关于人类年龄阶段的划分
据秦汉的《礼记·礼上第一》记载:“人生十年曰幼,学。二十曰弱,冠。三十曰壮,有室。四十曰强,而仕。五十曰艾,服官政。六十曰耆,指使。七十曰老,而传。八十、九十曰耄。百年曰期,颐。”
要求 :编写程序“姓名-3-2.py” ,当输入一个年龄后,按中国古代年龄段划分,给出这个年龄的年龄段名称。如输入 年龄“20”,输出“弱”

3.为了评价一个人是否肥胖,1835年比利时统计学家和数学家凯特勒提出一种简便的判定指标BMI(身体质量指数)。BMI的定义如下:BMI=体重(kg)÷身高2(m)按照这个计算方法,WHO(世界卫生组织)1997年公布了一个判断人肥胖程度的BMI标准,后来又公布了中国参考标准。
要求 :编写程序“姓名-3-3.py” ,根据上述资料,输入一个人的体重和身高,按中国参考标准输出BMI分类值

4.中国大学Mooc平台上第三周的学习,并按时完成第三周的单元测试,单元测试截止时间3月22日0时。

你可能感兴趣的:(2020年3月19日 第三章 程序控制结构-2)