Python程序控制结构

1.条件表达式

在选择和循环结构中,条件表达式的值只要不是False、0、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。

  1. 关系运算符
  • 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
  1. 逻辑运算符
    逻辑运算符and和or具有短路求值或惰性求值的特点,可能不会对所有表达式进行求值,而是只计算必须计算的表达式的值

2.选择结构

  1. 单分支选择结构
    if 表达式:
    语句块

  2. 双分支选择结构
    if 表达式:
    语句块1
    else
    语句块2

  3. 多分支选择结构(关键字elif是else if 的缩写)
    if 表达式1:
    语句块1
    elif 表达式2:
    语句块2
    elif 表达式3:
    语句块3
    else:
    语句块4

  4. 选择结构的嵌套(缩进必须正确且一致)
    if 表达式1:
    语句块1
    if 表达式2:
    语句块2
    else:
    语句块3
    else:
    if 表达式4:
    语句块4

3.循环结构

  1. for…in遍历循环:计数、字符串、列表、文件…
    for 取值 in 序列或迭代对象
    循环体
    [else:
    else子句代码块 ]

  2. while条件循环
    while 条件表达式
    循环体
    [else:
    else子句代码块 ]

  3. 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))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值