目录

  • 一、break 语句
  • 二、continue 语句
  • 三、else 语句
  • 四、使用zip()并行迭代
  • 五、推导式创建序列
  • 1.列表推导式
  • 2.字典推导式
  • 3.集合推导式
  • 4.生成器推导式(生成元组)
  • 六、应用
  • 1.同心圆
  • 2. 棋盘


一、break 语句

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

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

二、continue 语句

continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最近的一层循环。

三、else 语句

【操作】要求输入员工的薪资,若薪资小于0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资
emp_num=0
emp_sum=0
sala_ava=0
sala=[]
while True:
    s = input("请输入员工的薪资:")
    if s.upper()=="Q":

        print("输入结束")
        break

    elif float(s)<0:
        print("输入有误,请重新输入")
        continue
    else:
        emp_num+=1
        emp_sum=emp_sum+float(s)
        sala.append(float(s))
    sala_ava=emp_sum/emp_num
print("员工共有{0}位,工资列表位{1},平均工工资{2:.2f}元".format(emp_num,sala,sala_ava))
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))

四、使用zip()并行迭代

names = ("高淇","高老二","高老三","高老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))

五、推导式创建序列

1.列表推导式

列表推导式生成列表对象,语法如下:
[表达式for item in 可迭代对象]或者:{表达式for item in 可迭代对象if 条件判断}

y= [x for x in range(50) if x%2==0]
print(y)

2.字典推导式

字典的推导式生成字典对象,格式如下:
{key_expression : value_expression for 表达式in 可迭代对象}

text="szjxbckjnkzjnfcjn,nzkjn,z kkzzmckzkx"
j_count={c:text.count(c) for c in text}
print(j_count)
#普通方法:
text="szjxbckjnkzjnfcjn,nzkjn,z kkzzmckzkx"
j_count={}
for i in text:
    j_count[i]=text.count(i)
print(j_count)

3.集合推导式

集合推导式生成集合,和列表推导式的语法格式类似:
{表达式for item in 可迭代对象}或者:{表达式for item in 可迭代对象if 条件判断}

b={x for x in range(11) if x%2==0}
print(b)
##推导式的应用:
b=(x*2 for x in range(11))
print(tuple(b))

4.生成器推导式(生成元组)

“一个生成器对象”。显然,元组是没有推导式的。一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。

>>> gnt = (x for x in range(1,100) if x%9==0)
>>> for x in gnt:
print(x,end=' ')
9 18 27 36 45 54 63 72 81 90 99
>>> for x in gnt:
print(x,end=' ')
>>>

六、应用

1.同心圆

import turtle
t=turtle.Pen()
my_color=["blue","red","yellow","green"]
t.width(3)
t.speed(0.5)
for i in range(15):
    t.penup()
    t.goto(0, -i * 15)
    t.pendown()
    t.color(my_color[i%len(my_color)])#索引为余数表示<4(0,1,2,3)
    t.circle(15+i*15)

2. 棋盘

import turtle
t=turtle.Pen()
my_color=["blue","red","yellow","green"]
for i in range(21):
    t.penup()
    t.goto(0, -i*10)
    t.pendown()
    t.color(my_color[i%len(my_color)])
    t.forward(200)
    t.hideturtle()  # 隐藏画笔
turtle.right(90)
for m in range(21):
    turtle.penup()
    turtle.goto(m * 10, 0)
    turtle.pendown()
    turtle.color(my_color[m % len(my_color)])

    turtle.forward(200)
    turtle.hideturtle()  # 隐藏画笔


turtle.done()
#画棋盘
import turtle

width = 30
num = 18
x1 = [(-400,400),(-400+width*num,400)]
y1 = [(-400,400),(-400,400-width*num)]
t = turtle.Pen()
t.speed(10)
# t.goto(x1[0][0],x1[0][1])
# t.goto(x1[1][0],x1[1][1])
for i in range(0,19):
    t.penup()
    t.goto(x1[0][0],x1[0][1]-30*i)
    t.pendown()
    t.goto(x1[1][0],x1[1][1]-30*i)
for i in range(0,19):
    t.penup()
    t.goto(y1[0][0]+30*i,y1[0][1])
    t.pendown()
    t.goto(y1[1][0]+30*i,y1[1][1])
    t.hideturtle() #隐藏画笔
turtle.done() #保证运行窗口不被自动关闭