Python基础知识(5)
for循环结构
嵌套循环
#嵌套循环测试
for x in range(5):
for y in range(5):
print(x,end='\t')
print()
#打印乘法表
for m in range(1,10):
for n in range(1, m+1):
print('{}*{}={}'.format(m, n, n*m), end='\t')
print()
#打印表中工资大于15000的数据
#制作表格
r1 = {'name':'老大','salary':10000,'city':'北京'}
r2 = {'name':'老二','salary':20000,'city':'上海'}
r3 = {'name':'老三','salary':30000,'city':'广州'}
tb = [r1,r2,r3]
for x in range(len(tb)):
if tb[x].get('salary') > 15000:
print(tb[x].get('name'))
break和contiune语句
break跳出循环,continue结束本次循环,开始下一次循环
#录入员工薪资数据,返回平均值
empNum = 0
salarySum = 0
salary = []
while True:
s = input('输入员工薪资,按q结束录入:')
if s.upper() == 'Q':
break
if float(s) < 0:
print('输入有误,请重新输入')
continue
empNum += 1
salary.append(float(s))
salarySum += float(s)
print('员工总人数为:{}'.format(empNum))
print('薪资分别为:{}'.format(salary))
print('平均薪资为:{}'.format(salarySum/empNum))
循环中 else 语句
while,for 循环可附带else语句,循环若被正常执行,则else语句执行。若循环中途break,则else不执行。
#录入固定数量员工薪资,若提前结束录入可弹出
salary = []
salarySum = 0
empNum = 0
for i in range(5):
s = input('输入员工薪资,按q中途结束')
if s.upper() == 'Q':
print('录入完成,退出')
break
if float(s)<0:
continue
empNum += 1
salary.append(float(s))
salarySum += float(s)
else:
print('您已全部完成5名员工的录入')
print('录入人数{}'.format(empNum))
print('平均员工薪资{}'.format(salarySum/empNum))
循环代码的优化
1.循环代码优化
2.尽量减少循环内部不必要的计算
3.嵌套循环中,尽量减少内层循环的计算,尽量往外提
4.尽量使用局部变量
5.连接多个字符串,尽量使用join()而不是+
6.列表进行插入和删除,尽量在列表尾部进行操作
推导式
列表推导式:【表达式 for item in 可迭代对象】
或【表达式 for item in 可迭代对象 if 条件判断】
字典推导式
{key_expression : value_expression for 表达式 in 可迭代对象}
集合推导式
{key_expression for 表达式 in 可迭代对象}
#列表推导式 【表达式 for item in 可迭代对象】或【表达式 for item in 可迭代对象 if 条件判断】
a = [(x,y) for x in range(10) for y in range(8) if x%2 == 0 if y%3 == 0]
print(a)
# 字典推导式 {key_expression : value_expression for 表达式 in 可迭代对象}
my_text = 'i love you ,i love china'
b = {i: my_text.count(i) for i in my_text}
print(b)
#集合推导式 {key_expression for 表达式 in 可迭代对象}
# 生成器推导式(生成元组)
gnt = (x for x in range(5))
for x in gnt:
print(x,end=',')
小练习:画不同颜色的同心圆
import turtle
my_color = ['red','blue','yellow','green','black']
p = turtle.Pen()
p.width(5)
p.speed(0)
for i in range(10):
p.color(my_color[i%5])
p.circle(10*i+10)
p.penup()
p.goto(0,-10*i-10)
p.pendown()
turtle.done() #作图后保留画面
作图如上