A,顺序控制
程序从上到下逐行执行
python定义变量时,会合法地向前引用
age = 1
age2 = age +1
age2 = age +1
age = 1 ——>错误,age应在age2之前
B,分支控制
1,单分支if
语法
if 条件表达式 :
代码块
说明:
a,表达式为True,执行代码块;表达式为False,不执行
b,python缩进,可以界定代码块
例
if 3>2
print("yes")
print("ready")
if 4>5
print("haha")
——>
yes
ready
2,双分支if else
if 条件表达式 :
代码块1
else:
代码块2
例
name = Tom
if name == "Tom":
print("Tom是一只猫咪")
else:
print("这只猫咪不是Tom")
3,多分支
语法
if 条件表达式 :
代码块1
elif 条件表达式2 :
代码块2
......
else:
代码块n
流程
例
id>=70,是老员工;id>=60,是普通员工;id>=50,是实习生,其他都是临时工
要求:从键盘输入id=55,判断员工种类
id = int(input("请输入员工id "))
if id>=70:
print("是老员工")
elif id<=70 and id>=60:
print("是普通员工")
elif id<=60 and id>=50:
print("是实习生")
else:
print("是临时工")
4,嵌套分支
语法
if:
if:
说明:
a,在一个分支结构中又嵌套了一个分支结构
b,内层分支,外层分支
c,嵌套不超过三层(可读性)
例
精灵age>2000则长寿,否则不长寿,将长寿精灵分为木精灵和卓尔
要求:输入age和种类,输出结果
age = int(print("请输入年龄:"))
if age>2000:
print("长寿")
spirit = print("请输入种类:")
if spirit == "木精灵" :
print("木精灵")
else:
print("卓尔")
else:
print("不长寿")
练习(单分支,双分支)
a,定义两个变量,判断和是否大于60,如果大于60,输出"普通成功",否则"鉴定失败"
num = 40
num2 = 50
if num+num2 >60:
print("普通成功")
else:
print("鉴定失败")
b,定义两个float,第一个float大于5,且第二个float大于10,输出两数之和
num = 6.5
num2 = 15.3
if num>5 and num2>10:
print(f"{num}+{num2}=")
c,定义两个int,判断两者的和,是否能被3且5整除,若可以被整除,输出"yes"
num = 50
num2 = 100
if (num+num2) %3 == 0 and (num+num2) %5 == 0:
print("yes")
C,循环控制
1,for循环
功能:让代码循环运行
语法:
for <变量> in <范围、序列>:
<循环操作语句>
例
nums = (1,2,3,4) <class 'list'>
for i in nums:
print("第",i,"名")
——>
第1名
第2名
第3名
第4名
说明:
1,for,in是关键字
2,<范围、序列>可以理解为要处理的数据集,必须是可迭代对象(字符串,列表等)
3,<循环操作语句>可以有多条
4,python的for循环是轮询机制(一个一个问过去)
5,可以和else配合使用
for <变量> in <范围、序列>:
<循环操作语句>
else:
<循环操作语句>
流程图
tips:遍历数字序列,可以使用内置range()函数,生成数列,且数列前闭后开
range()函数
1,range()是一个不可变的序列类型
2,默认step=1,start=0
3,list()函数可以查看range()生成的序列包含的数据
4,生成的数列前闭后开
语法
range(start,stop,step=1):
range(起点,终点,每次增加的数)
例
要求:生成(1,2,3,4,5)
r = range(1,6,1)
print(list(r))
——>
(1,2,3,4,5)
练习(for)
1,生成(0,1,2,3,4,5)
range(6):
print(list(range))
2,用for range输出10次hello world
for a range(10):
print("hello world")
2,while循环
功能:在表达式为真的前提下,重复地执行
语法
while <判断条件>:
<循环操作语句>
说明:
1,while是关键字
2,条件为True,执行<循环操作语句>;条件为False,退出while
3, <循环操作语句>可以有多条
例
age = 1
while age < 4:
print("Tom还不到4岁",age)
age += 1 age会不断+1
——>
Tom还不到4岁 1
Tom还不到4岁 2
Tom还不到4岁 3
流程图
4,while可以和else一起使用
while <判断条件>
<循环操作语句>
else
<其他语句>在while else判断条件为False时,会执行else的语句块
age = 1
while age < 4:
print("Tom还不到4岁",age)
age += 1 age会不断+1
else
print("Tom是只大猫咪")
——>
Tom还不到4岁 1
Tom还不到4岁 2
Tom还不到4岁 3
Tom是只大猫咪
练习(while)
1,输出,1-100中所有能被3整除的数
a = 1
while a <= 100:
if a%3 = 0
print(a)
a += 1
2,输出,40-100中所有偶数
a = 40
while a <=100:
if a%2 = 0:
print(a)
a +=1
3,键盘输入name,输入exit时结束
name = input("请输入名字:")
while name != "exit":
#name = input("请输入名字:")也可以写在这边
print("name")
4,输出,1-100中所有能被9整除的数,并统计个数,算出总和
a = 1
count = 0
sum = 0
while a <= 100:
if a%9 == 0:
print(a)
count += a
sum += a
a += 1
print(f"count={count} sum={sum}")
3,多重循环
功能:将 一个循环放在另一个循环里(for,while)
说明
1,嵌套循环就是把内层循环当成外层循环的循环体
2,循环尽量不超过三个(可读性)
3,如果外层循环是m次,内层循环是n次,一共需要循环m*n次
例
使用for 输出五层的空心金字塔
输出*****
for a in range(1,6):a控制每层输出的*的个数
print("*",end ="")使用end ="",让输出结果不换行
输出由*组成的矩形
for b in range(1,6):b控制输出层数
for a in range(1,6):
print("*",end ="")
print("")print("")每层输出后换行
输出直角三角形
for b in range(1,6):
for a in range(b):每层输出的*的个数=(1,b+1)= b
print("*",end ="")
print("")
输出金字塔
for b in range(1,6):
for c in range(5-b):c控制空格数,每层的空格数=5-b
print(" ",end ="")
for a in range(2*b-1):每层*的个数=2*b-1
print("*",end ="")
print("")
输出空心金字塔
每层的两边输出*,最后一层输出*
for b in range(1,6):
for c in range(5-b):
print(" ",end ="")
for a in range(2*b-1):
if a == 0 or a == 2*b-1-1 or a = 5:金字塔的两边(左边和右边的*),最后一层
print("*",end ="")
else:
print(" ",end ="")金字塔中间的空格
print("")
输出层数可随意改变的空心金字塔
使用total_level(总层数)
for b in range(1,total_level):
for c in range(total_level-b):
print(" ",end ="")
for a in range(2*b-1):
if a == 0 or a == 2*b-1-1 or a = total_level:
print("*",end ="")
else:
print(" ",end ="")
print("")
练习
统计三个班的成绩,每班有五个学生
1,求各个班的平均分和总分,从键盘输入学生成绩
sum = 0.0
for a range(6):
score = float(input("请输入成绩:"))
sum += score 累加到sum
print("班级的情况:平均分 {sum/5}")
2,求三个班级及格人数的总和