break、count、else、代码优化

break 语句

break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只能跳出最近一层的循环。
【操作】使用 break 语句结束循环

while True:
    a = input("请输入一个字符(输入 Q 或 q 结束)")
    if a.upper()=='Q':
    	print("循环结束,退出")
    	break
    else:
    	print(a)

continue 语句

continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最
近的一层循环。
【操作】 要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和
薪资明细,以及平均薪资

empNum = 0 	#录入员工数
salarySum= 0	#员工薪资,累加求平均,即平均薪资
salarys = []	#员工薪资明细
while True:
    s = input("请输入员工的薪资(按 Q 或 q 结束):")
    if s.upper()=='Q':
    	print("录入完成,退出")
    	break
    if float(s)<0:
    	continue
    empNum +=1
    salarys.append(float(s))
    salarySum += float(s)
print("员工数{0}".format(empNum))
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarySum/empNum))

执行结果:

请输入员工的薪资(按 Q 或 q 结束):2000
请输入员工的薪资(按 Q 或 q 结束):3000
请输入员工的薪资(按 Q 或 q 结束):4000
请输入员工的薪资(按 Q 或 q 结束):5000
请输入员工的薪资(按 Q 或 q 结束):Q
录入完成,退出
员工数 4
录入薪资: [2000.0, 3000.0, 4000.0, 5000.0]
平均薪资 3500.0

else 语句

while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句结束,则会执行 else 子句,否则不执行。语法格式如下:

while 条件表达式:
  循环体
else:
  语句块

或者:

for 变量 in 可迭代对象:
  循环体
else:
  语句块

  
【操作】 员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资

salarySum = 0   #员工薪资
salarys = []
for i in range(4):
    s = input("请输入一共四名员工的薪资(按Q或q中途结束):")
    if s.upper() == 'Q':
        print("录入完成,退出\n")
        break
    if float(s) < 0:
        continue
    salarys.append(float(s))
    salarySum += float(s)
else:
    print("您已全部录入四名员工的薪资")
print("录入薪资:", salarys)
print("平均薪资:{0}".format(salarySum/4))

循环代码优化

虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上“斤斤计较”。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:

  1. 尽量减少循环内部不必要的计算
  2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。(循环尽量最多只用2个for)
  3. 局部变量查询较快,尽量使用局部变量

#循环代码优化测试

import time

start = time.time()
for i in range(1000):
    result = []
    for m in range(10000):
        result.append(i * 1000 + m * 100)
end = time.time()
print("耗时:{0}".format((end - start)))

start2 = time.time()
for i in range(1000):
    result = []
c = i * 1000
for m in range(10000):
    result.append(c + m * 100)
end2 = time.time()
print("耗时:{0}".format((end2 - start2)))


运行结果对比:
耗时:2.550192356109619
耗时:0.0029926300048828125

其他优化手段

  1. 连接多个字符串,使用 join()而不使用 +
  2. 列表进行元素插入和删除,尽量在列表尾部操作

使用 zip()并行迭代

我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。
【操作】测试 zip()并行迭代

names = ("高老庄","高老头","高千金","高夫人")
ages = (100,40,20,35)
jobs = ("办公室","程序员","公务员")
for name,age,job in zip(names,ages,jobs):
	print("{0}--{1}--{2}".format(name,age,job))

执行结果:
高老庄--100--办公室
高老头--40--程序员
高千金--20--公务员
### 回答1: 这段代码有语法错误,应该是这样的: count = 0 while count < 3: print(count, '小于3') if count == 2: break count += 1 else: print(count, "不小于3") 输出结果为: 0 小于3 1 小于3 2 小于3 这是一个简单的 while 循环,当 count 小于 3 时,会一直执行循环体中的代码。当 count 等于 2 时,会执行 break 语句,跳出循环。如果循环正常结束,即 count 不小于 3,会执行 else 语句块中的代码。 ### 回答2: count变量初始化为0,然后进入while循环,判断count是否小于3。由于count的初始值为0,所以条件成立,进入循环体。 在循环体内部,首先打印出count的值,即0,并输出"小于3"。然后进入if语句判断count是否等于2。由于count的值是0,所以条件不成立,不执行if语句内的代码。 接着执行else语句内的代码,即输出count的值0,并输出"不小于3"。 循环体内的代码执行完毕后,再次检查循环条件,发现count的值仍然是0,小于3,所以继续执行循环体内的代码。 因此,又会打印出count的值0,并输出"小于3",再次进入if语句判断条件,由于count的值仍然是0,条件不成立,不执行if语句内的代码。 继续执行else语句内的代码,即输出count的值0,并输出"不小于3"。 循环体内的代码执行完毕后,再次检查循环条件,发现count的值仍然是0,小于3,所以继续执行循环体内的代码。 同样的逻辑,又会打印出count的值0,并输出"小于3",再次进入if语句判断条件。由于count的值仍然是0,条件不成立,不执行if语句内的代码。 继续执行else语句内的代码,即输出count的值0,并输出"不小于3"。 循环体内的代码执行完毕后,再次检查循环条件,发现count的值仍然是0,小于3,所以继续执行循环体内的代码。 这样循环会一直持续下去,直到count的值加一变成1。但是在循环体的if语句中,出现了一个break语句。一旦执行到break语句,循环会立即终止。 因此,循环只执行了一次,打印出了count的值0并输出"小于3",然后终止循环。 综上所述,程序的输出为:0 小于3。 ### 回答3: count = 0 while count < 3: print(count, '小于3') if count == 2: break count = 1 else: print(count,"不小于3") 这段代码的作用是在count小于3的情况下,循环输出count的值,并判断是否等于2,如果等于2的话,则跳出循环。如果不等于2,则将count赋值为1。当count不小于3时,输出count的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值