第六节 控制语句
- 选择结构
- 多分支选择结构
- 选择结构的嵌套
- 循环结构
- while循环
- for循环和可迭代对象遍历
- range 对象
- 嵌套循环
- break
- continue
- else语句
- 循环代码优化
- 使用zip
- 推导式创建序列
- 列表推导式
- 字典推导式
- 集合推导式
- 生成器推导式
- 综合练习
- 绘制不同颜色的多个同心圆
选择结构
选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支和多分支。流程图如下:
s=input("请输入一个数字")
if int(s)<10:print("s是小于10的数字")
else:print("s是大于等于10的数字")
#测试三元条件运算符
print("s是小于10的数字"if int(s)<10 else "s是大于等于10的数字")
请输入一个数字55
s是大于等于10的数字
s是大于等于10的数字Process finished with exit code 0
多分支选择结构
score =int(input("请输入分数"))
grade =''
if(score<60):grade='不及格'
if(60<=score<=80):grade = '及格'
if(80<=score<=90):grade = '良好'
if(90<=score<=100):grade = '优秀'
print('分数是{0},等级是{1}'.format(score,grade))
请输入分数79
分数是79,等级是及格Process finished with exit code 0
score =int(input("请输入分数"))
grade =''
if(score<60):grade='不及格'
elif score<80:grade="及格"
elif score<90:grade="良好"
elif score<100:grade = "优秀"
print('分数是{0},等级是{1}'.format(score,grade))
请输入分数89
分数是89,等级是良好Process finished with exit code 0
选择结构的嵌套
score =int(input("请输入分数"))
if score>100 or score<0:print("请输入一个0-100的分数")
else:if score>=90:print('A')elif score >=80:print('B')elif score >= 70:print('C')elif score >= 60:print('D')else:print('E')print('分数是{0},等级是{1}'.format(score,grade))
score =int(input("请输入分数"))
degree="ABCDE"
num=0
if score>100 or score<0:print("请输入一个0-100的分数")
else:num=score//10if num<6:num=5print('分数是{0},等级是{1}'.format(score,degree[9-num]))
请输入分数89
分数是89,等级是BProcess finished with exit code 0
循环结构
while循环
num=0
while num<=10:print(num)num+=1
#计算1-100之间数字的累加和
num2=0
sum_all=0
while num2<=100:sum_all=sum_all+num2num2+=1
print("1-100所有数的累加和:",sum_all)
快捷键目录标题文本样式列表链接代码片表格注脚注释自定义列表LaTeX 数学公式插入甘特图插入UML图插入Mermaid流程图插入Flowchart流程图
目录复制
for循环和可迭代对象遍历
d={'name':'gaoqi','age':18,'address':'西三旗'}
for x in d:print(x)
for x in d.keys():print(x)
for x in d.values():print(x)
for x in d.items():print(x)
name
age
address
name
age
address
gaoqi
18
西三旗
('name', 'gaoqi')
('age', 18)
('address', '西三旗')Process finished with exit code 0
range 对象
sum_all=0
sum_even=0
sum_odd=0
for num in range(101):sum_all+=numif num%2==0:sum_even+=numelse:sum_odd+=numnum+=1
print("1-100所有数的累加和",sum_all)
print("1-100所有偶数的累加和",sum_even)
print("1-100所有奇数的累加和",sum_odd)
1-100所有数的累加和 5050
1-100所有偶数的累加和 2550
1-100所有奇数的累加和 2500Process finished with exit code 0
嵌套循环
for x in range(5):for y in range(5):print(x,end="\t")print()#天然有换行for m in range(1,10):s=""for n in range(1,m+1):s+=str.format("{0}*{1}\t",m,n,m*n)print(s)
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
1*1
2*1 2*2
3*1 3*2 3*3
4*1 4*2 4*3 4*4
5*1 5*2 5*3 5*4 5*5
6*1 6*2 6*3 6*4 6*5 6*6
7*1 7*2 7*3 7*4 7*5 7*6 7*7
8*1 8*2 8*3 8*4 8*5 8*6 8*7 8*8
9*1 9*2 9*3 9*4 9*5 9*6 9*7 9*8 9*9
r1=dict(name='高小一',age=18,salary=30000,city='北京')
r2=dict(name='高小二',age=19,salary=20000,city='上海')
r3=dict(name='高小五',age=20,salary=10000,city='深圳')
tb=[r1,r2,r3]
for x in tb:if x.get('salary')>15000:print(x)
结果输出:
{'name': '高小一', 'age': 18, 'salary': 30000, 'city': '北京'}
{'name': '高小二', 'age': 19, 'salary': 20000, 'city': '上海'}
break
while True:a=input("请输入一个字符(输入q或Q时退出):")if a=='q' or a== 'Q':print("循环结束,退出")breakelse:print(a)
continue
empNum=0
salarySum=0
salarys=[]
while True:s=input('请输入员工工资数(按q或Q结束)')if s.upper()=='Q': #小写字母转大写print('录入完成,退出')breakif float(s)<0:continueempNum+=1salarys.append(float(s))#append加入工资项salarySum+=float(s)
print('员工数{0}'.format(empNum))
print('录入工资:',salarys)
print('平均薪资{0}'.format(salarySum/empNum))#foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 ……
结果:
请输入员工工资数(按q或Q结束)7000
请输入员工工资数(按q或Q结束)90000
请输入员工工资数(按q或Q结束)q
录入完成,退出
员工数2
录入工资: [7000.0, 90000.0]
平均薪资48500.0Process finished with exit code 0
else语句
循环代码优化
其他优化手段:
1.连续多个字符串,使用join()而不使用+
2.列表进行元素插入和删除,尽量在列表尾部操作
使用zip
for i in [1,2,3]:print(i)
names=('高琪','高老二','高老三','高老四')
ages=(18,16,20,25)
jobs=('老师','程序员','公务员')for name,age,job, in zip(names,ages,jobs):print('{0}--{1}--{2}'.format(name,age,job))
for i in range(3):print('{0}--{1}--{2}'.format(names[i],ages[i],jobs[i]))
1
2
3
高琪--18--老师
高老二--16--程序员
高老三--20--公务员
高琪--18--老师
高老二--16--程序员
高老三--20--公务员Process finished with exit code 0
推导式创建序列
列表推导式
字典推导式
集合推导式
生成器推导式
生成元组tuple gnt是可迭代对象可以循环
综合练习
绘制不同颜色的多个同心圆
import turtle
t = turtle.Pen()
my_colors=('red','green','yellow','black')
t.width(4)
t.speed(0)
for i in range(50):t.penup()t.goto(0,-i*10)t.pendown()t.color(my_colors[i%len(my_colors)])t.circle(15+i*10)
turtle.done() #程序执行完,窗口仍然在