Python 包含以下几种可迭代对象:
序列。包含:字符串、列表、元组字典迭代器对象(iterator)生成器函数(generator)文件对象结果
运行结果
注意:此处的月薪不加引号,加引号为字符串不是整型,下一步判断报错。
运行结果
while循环在条件不满足时结束,for循环遍历完序列后结束。如果在循环条件仍然满足或序列没有遍历完的时候,想要强行跳出循环,就需要用到break语句。当有嵌套循环时,break 语句只能跳出最近一层的循环。 注意if后面a=的语句是a==若为=则报错。
练习
sum_salary = 0 salary_list = [] salary = 0 while True: salary = input('请输入员工的薪资,输入Q结束计算:') if salary.upper() == 'Q': print('程序结束') #salary = 0 break elif float(salary) <= 0: print('您输入的数值有误,请重新输入') continue salary_list.append(salary) sum_salary += float(salary) if len(salary_list) == 0: print('您没有输入任何薪资,程序退出') else: print('员工数量为:{0}'.format(len(salary_list))) print('薪资明细为:{0}'.format(salary_list)) print('平均工资为:{0}'.format(sum_salary/len(salary_list)))while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句结束,则会执行 else 子句,否则不执行。
salarySum= 0 salarys = [] for i in range(4): s = input("请输入一共 4 名员工的薪资(按 Q 或 q 中途结束)") if s.upper()=='Q': print("录入完成,退出") break if float(s)<0: continue salarys.append(float(s)) salarySum += float(s) else: print("您已经全部录入 4 名员工的薪资") print("录入薪资:",salarys) print("平均薪资{0}".format(salarySum/4))注意:代码if break语句在if continue前面。
问题往往出在循环语句处。性能问题上“斤斤计较”
(1)尽量减少循环内部不必要的计算 (2)嵌套循环中,尽量减少内层循环的计算,尽可能向外提。 (3)局部变量查询较快,尽量使用局部变量 (4)连接多个字符串, 使用 join()而不使用+,列表进行元素插入和删除, 尽量在列表尾部操作
可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。
列表、字典、集合的推导式
#列表的推导式 s='I love you' y=[x for x in s] print(y) # 字典的推导式 a='I love you' My={c:a.count(c) for c in a} print(My) #集合推导式 b={x for x in range(20) if x%5==0} print(b)列表、字典、集合都有推导式,元组有没有?”,能不能用小括号呢?
#生成器推导式(生成元组) gnt=(x for x in range(6)) print(gnt) print(tuple(gnt)) print(tuple(gnt)) #只能遍历一次,该次为空注意:小括号的元组推导式是生成器,只能遍历一次
Python 中,定义函数的语法如下: def 函数名 ([参数列表]) : ‘’‘文档字符串’’’ 函数体/若干语句
def tes1(): print('#'*6) print('$'*6) tes1()**注意:**在运行test函数时生成了pytest_cache文件,且报错,要避免使用test函数名称即可。
