1.条件表达式
在选择和循环结构中,条件表达式的值只要不是False、0、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。
- 关系运算符
- Python中的关系运算符可以连续使用,不仅可减少代码,也比较符合人类的思维方式。
>>>print(1<2<3) #等价于1<2 and 2<3
True
>>>print(1<2>3)
False
>>>print(1<3>2)
True
- 在Python语法中,条件表达式不允许使用赋值运算符“=”
>>>if a=3: #条件表达式不允许使用赋值运算符
SyntaxError: invalid syntax
>>>if (a=3) and (b=4):
SyntaxError: invalid syntax
- 逻辑运算符
逻辑运算符and和or具有短路求值或惰性求值的特点,可能不会对所有表达式进行求值,而是只计算必须计算的表达式的值。
2.选择结构
-
单分支选择结构
if 表达式:
语句块 -
双分支选择结构
if 表达式:
语句块1
else
语句块2 -
多分支选择结构(关键字elif是else if 的缩写)
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
else:
语句块4 -
选择结构的嵌套(缩进必须正确且一致)
if 表达式1:
语句块1
if 表达式2:
语句块2
else:
语句块3
else:
if 表达式4:
语句块4
3.循环结构
-
for…in遍历循环:计数、字符串、列表、文件…
for 取值 in 序列或迭代对象
循环体
[else:
else子句代码块 ] -
while条件循环
while 条件表达式
循环体
[else:
else子句代码块 ] -
break和continue保留字:当前循环层次
- 一旦break语句被执行,将使得break语句所属层次的循环提前结束
- continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环
例题1:输入若干哥个成绩,求所有成绩的平均分,每输入一个成绩之后询问是否继续输入下一个成绩,回答”yes“就继续输入,”no“就停止输入。
nums=[] #使用列表存放临时数据
while True:
x=input('请输入一个成绩:')
try: #异常处理结果
nums.append(float(x))
except:
print('不是合法输入')
while True:
flag=input('继续输入吗?(yes/no)')
if flag.lower() not in ('yes','no'): #限定用户输入内容 lower()转化为小写字母
print('只能输入yes/no')
else:
break
if flag.lower()=='no':
break
print(sum(nums)/len(nums))
例题2:模拟比赛最终成绩的计算结果
while True:
try:
n=int(input('请输入评委人数:'))
if n<=2:
print('评委太少 必须多于2个人')
else:
break
except:
pass
scores = []
for i in range(n):
#这个while循环用来保证用户必须输入0到100之间的数字
while True:
try:
score=input('请输入第{0}个评委的分数'.format(i+1))
#把字符串转换为实数
score = float(score)
#assert断言 要求后面的表达式必须等价于true 否则报错
assert 0<=score<=100
scores.append(score)
#如果数据合法 跳出while循环 继续下一个评委的分数
break
except:
print('分数错误')
#计算并删除最高分和最低分
hightest = max(scores)
lowest = min(scores)
scores.remove(hightest)
scores.remove(lowest)
finalScore = round(sum(scores)/len(scores),2)
formatter = '去掉一个最高分{0}\n去掉一个最低分{1}\n最后得分{2}'
print(formatter.format(hightest,lowest,finalScore))