变量、数据类型(整数、浮点数、布尔)、序列(字符串、列表、元组、字典、集合),可以看做是数据的组织方式。数据可以看做是“砖块”!
流程控制语句是代码的组织方式,可以看做是“混凝土”。
一个完整的程序,离不开“砖块”,也离不开“混凝土”。他们的组合,才能让我们建立从小到“一个方法”,大到“操作系统”,这样各种各样的“软件”。
选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支、多分支。流程图如下:
if 语句单分支结构的语法形式如下:
if 条件表达式:
语句/语句块
其中:
代码示例:输入一个数字,小于 10,则打印这个数字
num = int(input("输入一个数字:"))
if num < 10:
print(num)
在选择和循环结构中,条件表达式的值为 False 的情况如下:
False、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空 range 对象、空迭代对象。
其他情况,均为 True。这么看来,Python 所有的合法表达式都可以看做条件表达式,甚至包括函数调用的表达式。
代码示例:测试各种条件表达式
if 3:
print("ok")
if not []:
print("空列表,False")
s = "False"
if s:
print("非空字符串,是 True")
c = 9
if 3<c<10:
print("3)
if 3<c and c<10:
print("3)
if True:
print("True")
执行结果:
ok
空列表,False
非空字符串,是 True
3<c<10
3<c and c<9
True
条件表达式中,不能有赋值操作符“=”
在 Python 中,条件表达式不能出现赋值操作符“=”,避免了其他语言中经常误将关系运算符“==”写作赋值运算符“=”带来的困扰。如下代码将会报语法错误:
c= 9
if 3<c and (c=20):
print(c)
if 3<c and (c=20):
^
SyntaxError: invalid syntax
双分支结构的语法格式如下:
if 条件表达式 :
语句 1/语句块 1
else:
语句 2/语句块 2
代码示例:输入一个数字,小于 10,则打印该数字;大于 10,则打印“数字太大”
num = int(input("input a number:"))
if num < 10:
print(num)
else:
print("Too big to print")
Python 提供了三元运算符,用来在某些简单双分支赋值情况。三元条件运算符语法格式如下:
条件为真时的值 if (条件表达式) else 条件为假时的值
上一个案例代码,可以用三元条件运算符实现:
num = int(input("input a number:"))
print(num if num < 10 else "Too big to print")
可以看到,这种写法更加简洁,易读。
多分支选择结构的语法格式如下:
if 条件表达式 1 :
语句 1/语句块 1
elif 条件表达式 2:
语句 2/语句块 2
.
.
.
elif 条件表达式 n :
语句 n/语句块 n
[else:
语句 n+1/语句块 n+1
]
注:计算机行业,描述语法格式时,使用中括号[]通常表示可选,非必选。
多分支结构,几个分支之间是有逻辑关系的,不能随意颠倒顺序。
代码示例:输入一个学生的成绩,将其转化成简单描述:不及格(小于 60)、及格(60-79)、良好(80-89)、优秀(90-100)。
方法1:(使用完整的条件表达)
score = int(input("请输入分数"))
grade = ''
if(score<60):
grade = "不及格"
if(60<=score<80):
grade = "及格"
if(80<=score<90):
grade = "良好"
if(90<=score<=100):
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade))
每个分支都使用了独立的、完整的判断,顺序可以随意挪动,而不影响程序运行。
方法2:(利用多分支结构)
score = int(input("请输入分数"))
grade = ''
if(score<60):
grade = "不及格"
elif(score<80):
grade = "及格"
elif(score<90):
grade = "良好"
elif(score<=100):
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade))
代码示例:已知点的坐标(x,y),判断其所在的象限
x = int(input("请输入 x 坐标:"))
y = int(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("第三象限")
elif x>0 and y<0:
print("第四象限")
选择结构可以嵌套,使用时一定要注意控制好不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。
语法格式如下:
if 表达式 1:
语句块 1
if 表达式 2:
语句块 2
else:
语句块 3
else:
if 表达式 4:
语句块 4
else:
语句块 5
代码示例:输入一个分数。分数在 0-100 之间。90 以上是 A,80 以上是 B,70 以上是 C,60 以上是 D。60 以下是 E。
方法1:
score = int(input("请输入一个在 0-100 之间的数字:"))
grade = ""
if score>100 or score<0:
score = int(input("输入错误!请重新输入一个在 0-100 之间的数字:"))
else:
if score>=90:
grade = "A"
elif score>=80:
grade = 'B'
elif score>=70:
grade = 'C'
elif score>=60:
grade = 'D'
else: grade = 'E'
print("分数为{0},等级为{1}".format(score,grade))
方法2:
score = int(input("请输入一个在 0-100 之间的数字:"))
degree = "ABCDE"
num = 0
if score > 100 or score < 0:
score = int(input("输入错误!请重新输入一个在 0-100 之间的数字:"))
else:
num = score // 10
if num < 6:
num=5
if num == 10:
num=9
print("分数是{0},等级是{1}".format(score,degree[9-num]))