一:条件判断
1.程序执行的三大流程:
- 顺序流程:无缩进代码,从上往下依次执行
- 分支流程:选择性执行某块代码,或跳过某行代码去执行,与缩进(
TAB
)有关 - 循环流程:循环执行某块代码,最后回到终点
2.分支流程:
第一种分支结构:if
if结构的代码格式:
if 判断条件:
条件成立后执行的代码
注意:
- 判断条件可以是一个数值,也可以是一个表达式
- 如果判断条件是一个数值,只要不是0都是成立的 -- 非0即真(
True
),为0为假(False
) - 如果判断条件是一个序列;字符串,只要里面不是空的都是成立的 -- 非空即真(
True
),为空为假(False
),空格不算空,默认才为空,空格为真(True
),会执行 - 如果判断条件是一个表达式,则直接看表达式运算后的结果是否为真
if
是一定会执行的代码,而if里面的代码看是否满足判断条件,满足就执行,不满足则跳过
if 0:
print("不成立")
if 23:
print("成立")
if "":
print("不成立")
if [ ]:
print("成立")
if 0 and 89:
print("不成立")
if 0 or 89:
print("成立")
第二种分支结构:if - else
if - else
结构的代码格式:
if 判断条件:
条件成立后执行的代码
else:
条件不成立后执行的代码
注意:
if
可以单独出现,而else
不可以单独出现if - else
是一块代码,不会发生先后一起执行的情况,而是看判断条件是否满足
if 23>67:
print("成立执行")
else:
print("不成立执行")
第三种分支结构:if - elif - else
if - elif - else
结构的代码格式:当判断条件为多个值时使用
if 判断条件1:
条件1成立后执行的代码
elif 判断条件2:
条件2成立后执行的代码
elif 判断条件3:
条件3成立后执行的代码
......
else:
当以上条件都不成立时执行的代码
注意: 分支结构可以没有 elif
和 else
,但一定要有 if
3.多重判断:
**`and`;`or`**
if 判断条件1 and 判断条件2:
两个条件都成立后执行的代码
elif 判断条件3 or 判断条件4:
只有一个或两个都成立后执行的代码
else:
当以上条件都不成立时执行的代码
nan = int(input("请输入男方的年龄:"))
nu = int(input("请输入女方的年龄:"))
if nan>22 and nu>20:
print("可以结婚")
else:
print("不可以结婚")
4.if
嵌套:
if
嵌套的代码格式:
if 条件判断1:
if 条件判断2:
当两个条件都成立时执行的代码
nan = int(input("请输入男方的年龄:"))
nu = int(input("请输入女方的年龄:"))
if nan>22:
if nu>20:
print("可以结婚")
else:
print("不可以结婚")
else:
print("不可以结婚")
5.三目运算:
三目运算符也叫三元运算符或三元表达式 -- if - else
的简写
三目运算的代码格式:
先肯定再说条件最后说不满足条件时怎么办
变量名 = 条件成立后执行的代码 if 判断条件 else 条件不成立后执行的代码
print("变量名")
a = "可以请假" if int(input("请输入你的工资:"))>=10000000 else "不可以请假"
print(a)
二:while
循环
1.while
循环:
在Python编程中 while
语句用于循环执行程序,即在某一条件下,循环执行某段程序
while
循环语句的语法格式:
while 判断条件:
当条件成立时执行的语句
注意:
- 判断条件可以是一个数值,也可以是一个表达式
- 如果判断条件是一个数值,只要不是0都是成立的 -- 非0即真(
True
),为0为假(False
) - 如果判断条件是一个序列;字符串,只要里面不是空的都是成立的 -- 非空即真(
True
),为空为假(False
),空格不算空,默认才为空,空格为真(True
),会执行 - 如果在代码块中没有设置控制变量,那么当条件为真时,会出现死循环;当条件为假时,那么这一代码块,不会执行
- 如果判断条件是一个表达式,则直接看表达式运算后的结果是否为真
#打印1~100
i = 0
a = 1
while a <= 100:
i = i + 1
a = a + 1
print(i)
2.循环控制语句:
控制语句 | 描述 |
---|---|
break 语句 |
用于终止循环,并跳出整个循环结构 |
continue 语句 |
用于终止当前循环,并跳出该次循环,执行下一次循环 |
pass 语句 |
空语句,用于保持程序结构的完整性,无意义 |
注意: 1. 在Python中,continue
和break
是两个控制流语句,用于在循环中进行不同的控制流操作
2. 当遇到continue
语句时,循环中剩余的代码将会被忽略,循环会立即进入下一次迭代
3. 当遇到break
语句时,整个循环立即结束。不再执行
#打印1~100,跳过偶数
i = 0
a = 1
while a <= 100:
i = i + 1
a = a + 1
if i % 2 == 0:
continue
print(i)
#在1~50中,当遇到7的倍数时跳出循环,不包含7,在让其余的数相加
i = 0
a = 1
b = 0
while a <= 50:
i = i + 1
a = a + 1
if i % 7 == 0 and i != 7:
break
b = b + i
print(b)
3.while
循环嵌套:
当内部循环执行完成之后,再执行下一次外部循环的条件判断
#道歉三天,每一天说十次我错了
i = 1
while i < 6:
print(f"第{i}天道歉")
i = i + 1
a = 1
while a < 6:
print("对不起")
a += 1
#打印九九乘法表
i = 1
while i < 10:
o = 1
while o <= i:
print(f"{o}*{i}={i*o}", end="\t")
o += 1
print()
i += 1
三:for...in...
循环
1.for...in...循环:
-
for...in...
循环可以遍历任何序列的项目,如一个列表或者一个字符串,只有序列才可以进行遍历 -
for...in...
循环遍历的对象必须是可迭代对象,for...in...循环也可以理解为迭代循环 -
while
循环的循环条件是自定义的,for...in...
循环无法定义循环条件 -
for...in..
.循环是一种"轮循"机制,是对一批内容进行"逐个处理"
for...in...
循环的语法格式:
for 临时变量 in 可迭代对象(就是容器):
循环体
注意:
- 迭代:取值的过程,从前往后,不插队,不重复,这样的过程叫做迭代
- 取值:从可迭代对象中取值,赋值给临时变量,每一次循环都取一个值
- 临时变量:只能在
for...in...
循环中使用,每一次循环的值都不同,只能够保存当前循环的值,所以无法在for...in...
循环中被单独赋值 in
指的是临时变量在可迭代对象的里面,每一次循环临时变量都是从可迭代对象中取值
a = [1,2,3,4,5]
for i in a:
print(i)
#计算1~5相加的数字之和
a = 0
for i in "12345":
a = a + int(i)
print(a)
注意: 凡是数字超过9的就不能使用字符串,因为无法用字符串存储,字符串里面都是单独的个体
2.range()
函数:
作用: 生成一个连续的数字序列
range()
函数的第一种用法:
range(num)
#num表示生成0~num-1的连续数字序列
注意:
range()
函数生成的类型是一个range
类型- 单独使用时要用序列(字典除外)对其进行转换,将其里面的连续数字序列显示出来
print(list(range(10)))#生成一个0~9的连续数字序列(列表)
print(set(range(10)))#生成一个0~9的连续数字序列(集合)
注意:
- 因为集合是一个无序的序列,所以当把
range
类型转换成集合时,打印时可能会打乱里面的数字顺序,但在python3.x
的版本中,如果集合里面是纯数字,在一定的范围内,是不会出现乱序的,但如果里面是字符串,数字,变量等掺和在一起,就会出现乱序 - 序列不可以转换成
range()
range()
函数是生成一个可迭代的序列,而序列本身就是可迭代的
range()
函数的第二种用法:
range(n,m)
#n表示连续数字序列的起始值
#m表示m-1(因为不包含其m本身)是连续数字序列的结束值
print(tuple(range(3,16)))#生成一个3~15的连续数字序列(元组)
#计算1~100相加的数字之和
a = 0
for i in range(1,101):#当for...in...循环后面是可迭代对象时不用转换
a += i
print(a)
#计算1~100之间的偶数之和
a = 0
for s in range(1,101):
if s % 2 != 0:
continue
a += s
print(a)
range()
函数的第三种用法:
range(n,m,s)
#n表示连续数字序列的起始值
#m表示m-1(因为不包含其m本身)是连续数字序列的结束值
#s表示步长值(间隔值)起始值到结束值之间众多数字的差值
print(list(range(1,10,2)))#生成的数字就是[1,3,5,7,9],因为它们之间的差值为2
#计算1~100之间的偶数之和
a = 0
for s in range(0,101,2):
a += s
print(a)
3.for...in...循环嵌套:
当不需要用到临时变量时,可迭代对象就变成了循环次数,里面有几个元素,循环体就执行几次
a = 0
for i in ["112",a,18]:
print("对不起") #只会打印三次对不起
每一次的外部循环,内部都要重新开始再循环一遍
#道歉三天,每一天说十次我错了
for i in [1,2,3]:
print(f"第{i}天道歉")
for s in range(10):
print("我错了")
#打印九九乘法表
for i in range(1,10):
for s in range(1,1+i):
print(f"{s}*{i}={s*i}",end="\t")
print()
注意: else
不能够单独出现,但else
可以和if
使用,还可以与for
和while
循环一起同级使用,先执行循环里面的内容,待所有循环正常执行完毕后(被break
或其它原因中断,都属于非正常执行完毕),才会去执行else
里面的内容
#猜字游戏
import random
s = random.randint(1,100)
for i in "43210":
w = int(input("请输入数字:"))
if w == s:
print("恭喜你猜对了")
break
elif w > s:
print("猜大了")
print(f"回答错误,你还有{i}次机会")
elif w < s:
print("猜小了")
print(f"回答错误,你还有{i}次机会")
else:
print("抱歉,您的机会已经用完了!")
#道歉三天,每一天说十次我错了
i = 1
while i < 6:
print(f"第{i}天道歉")
i = i + 1
a = 1
while a < 6:
print("对不起")
a += 1
else:
print("我原谅你了!")