相关知识补充:
分支结构包含三种基本形式:单分支、双分支和多分支。
单分支结构的语法形式为:
if 条件表达式:
语句块
注意:
(1)条件表达式可以是任意表达式,只要结果不为0即认作True,否则为False。
(2)语句块:可以是一条语句,也可以是多条语句,多条语句的缩进必须对齐一致。双分支语句的语法形式
if 条件表达式:
语句块
else:
语句块多分支结构的语法形式
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
.
.
elif 条件表达式n:
语句块n
else:
语句块n+1嵌套if语句与逻辑结构
在if分支结构的语句中又包含一个或多个if结构语句称为if嵌套。
举例如下形式:
if 条件表达式1:
if 条件表达式1-1:
语句块1-1
else:
if 条件表达式1-2:
语句块1-2
注意:if 嵌套必须通过缩进表示出嵌套的层次。
** 常见运算符**
一般情况下,关系运算符的优先级高于逻辑运算符。
学习备注:
1、python规定非0的数即认为True
3、
总结:
- 遇到文字类问题,首先要进行分析,将解决思路利用流程图的形式表示,进而从数学角度解决问题。
- 好程序的三个基本指标
- 简单易懂
- 扩展性强
- 忠于自己的算法,程序要反映我们自己的想法。(例如问题8-示例1)
只有写出好的简单程序,更便于写出复杂的程序。
问题的提出
问题1:
输入两个整数存放于变量a和b中,并使得a中存放的数据小于b中存放的数据。
分析:
- 输入的两个数a和b
- a可能小于b,也可能大于b
- 如果a小于b,不进行任何处理
- 反之,交换a和b中的数
*需要对不同的情况做不同的处理,这样的问题,顺序结构无法解决。
解决这类问题,主要是用分支结构,分支结构的基本知识见本文最后。
a=int(input("输入第1个整数:"))
b=int(input("输入第2个整数"))
print("处理前:")
print("a=%d,b=%d"%(a,b))
if a>b:
t=a
a=b
b=t
print("处理后:")
print("a=%d,b=%d"%(a,b))
问题2:比较两个数的大小。输入两个数,输出其中较大的数。
a=float(input("请输入第一个数字:"))
b=float(input("请输入第二个数字:"))
if a>b:
print(a)
else:
print(b)
问题3:
输入三条边的值,判断是否能组成三角形。
分析:
任意两边之和大于第三边,也就是需要满足下面三个条件:
a+b>c
b+c>a
c+a>b
a=float(input("输入第一条边长:"))
b=float(input("输入第二条边长:"))
c=float(input("输入第三条边长:"))
if a+b>c and b+c>a and c+a>b:
print("能够组成三角形")
else:
print("不能组成三角形")
问题4:
划船问题,一个教师带着x个学生去划船,每条船最多装4人,问需要多数条船。
分析:
共有x个学生加1个教师,x+1对4取余数,通过余数是否为0来区分两种不同的情况。
x=int(input("输入学生数:"))
x=x+1
if x%4==0:
n=x//4
else:
n=x//4+1
print("共需要%d条小船"%n)
问题5:
计算分段函数的值。当x大于1时,y=x;当x小于-1时,y=-x;当x介于-1和1之间时,y=1。
x=float(input("请输入一个数:"))
if x>1:
y=x
elif x<-1:
y=-x
else:
y=1
print("分段函数的值为:%d"%y)
问题5:
已知某课程的百分制分数mark。将其转换为5级制。
成绩区间 | 成绩 |
---|---|
mark>=90 | 优 |
90>mark>=80 | 良 |
80>mark>=70 | 中 |
70>mark>=60 | 及格 |
mark<60 | 不及格 |
a=int(input("请输入一个数:"))
if a>=90:
m="优"
elif a>=80:
m="良"
elif a>=70:
m="中"
elif a>=60:
m="及格"
else:
m="不及格"
print("该学生的分数等级为%s"%m)
问题6:
已知,坐标点(x,y),判断其所在的象限。
分析:
有多种情况,坐标点可能在四个象限里,也可能在坐标轴上,甚至可能在远点。
x=float(input("请输入坐标x:"))
y=float(input("请输入坐标y:"))
if x==0 and y==0:
print("该坐标为原点")
elif x==0:
print("该坐标在y轴上")
elif y==0:
print("该坐标在x轴上")
elif x>0 and y>0:
print("该坐标在第一象限")
elif x<0 and y>0:
print("该坐标在第二象限")
elif x<0 and y<0:
print("该坐标在第三象限")
else:
print("该坐标在第四象限")
问题7:
判断某一年是否为闰年。判断闰年的条件是:
年份能被4整除但不能被100整除,或者能被400整除。
a=int(input("请输入年份:"))
if a%4==0:
if a%100!=0:
print("%d年是闰年"%a)
else:
if a%400==0:
print("%d年是闰年"%a)
else:
print("%d年不是闰年"%a)
#注意写法
if (a%4==0 and a%100!==0):
print("%d年是闰年"%a)
对比
#使用逻辑关系表达式
a=int(input("请输入年份:"))
if (a%4==0 and a%100!=0) or a%400==0: #也可以不加括号,加括号只是为了降低可读性。
print("%d年是闰年"%a)
else:
print("%d年不是闰年"%a)
问题8:
输出三个数中较大的数?
分析:输出两个数中较大的数用一个if语句,但输出三个数中较大的数则需要用到嵌套的if语句。
第一个程序是自己的版本,符合示例3的思路(也符合我们思考的思路)
a=float(input("请输入第一个数:"))
b=float(input("请输入第二个数:"))
c=float(input("请输入第三个数:"))
if a>b:
t=a
else:
t=b
if t<c:
t=c
print("三个数中最大的是%f"%t)
else:
t=b
print("三个数中最大的是%f"%t)
对比:(示例的写法更简单,而我是借助了中间变量t)
示例1:
a=float(input("请输入第一个数:"))
b=float(input("请输入第二个数:"))
c=float(input("请输入第三个数:"))
if a>=b:
if a>=c:
print(a)
else:
print(c)
else:
if b>=c:
print(b)
else:
print(c)
示例2(每次对比都淘汰一个数)
a=float(input("请输入第一个数:"))
b=float(input("请输入第二个数:"))
c=float(input("请输入第三个数:"))
if a>=b and b>=c:
print(a)
elif b>=c:
print(b)
else:
print(c)
来源:https://www.icourse163.org/learn/NEU-1002127001?tid=1450601504#/learn/content