目录
Python条件判断
Python循环语句
Python循环控制
迭代器与生成器
异常
一、Python 条件判断
(1)if 语句发
介绍
使用格式
# 举个栗子age = 30 # 代表年龄30岁print("------if判断开始------")if age >= 18: # 判断条件print("我已经成年了") # 条件成立则执行print("------if判断结束------")
age = 30 # 代表年龄30岁
print("------if判断开始------")
if age >= 18: # 判断条件
print("我已经成年了") # 条件成立则执行
print("------if判断结束------")
实际操作:
执行过程:
(2)比较运算符:
实际操作:
a = 3b = 3print(a == b) # 检查两个值print(a != b) # != ,a 是否不等于 bprint(a > b) # > ,a 是否大于 bprint(a < b) # < ,a 是否小于 bprint(a >= b) # >= ,a 是否大于等于 bprint(a <= b) # <= ,a 是否小于等于 b
b = 3
print(a == b) # 检查两个值
print(a != b) # != ,a 是否不等于 b
print(a > b) # > ,a 是否大于 b
print(a < b) # < ,a 是否小于 b
print(a >= b) # >= ,a 是否大于等于 b
print(a <= b) # <= ,a 是否小于等于 b
(3)逻辑运算符:
实际操作:
a = 10b = 20c = 30d = 10print(a < b and a > b) # and 当两侧的表达式都正确的时候,返回True,否则返回 False。print(a < b or b > a) # or 当两侧的表达式,只要有一个是正确时就返回True。print(not b > a) # b > a 结果是正确的。但是 not 会返回 False。# 如果结果是错误的,则返回 True。
b = 20
c = 30
d = 10
print(a < b and a > b) # and 当两侧的表达式都正确的时候,返回True,否则返回 False。
print(a < b or b > a) # or 当两侧的表达式,只要有一个是正确时就返回True。
print(not b > a) # b > a 结果是正确的。但是 not 会返回 False。
# 如果结果是错误的,则返回 True。
(4)if-else 语句
# 举个栗子chePiao = 1 # 用1代表有车票,0代表没有车票if chePiao == 1: # 判断条件print("还好买到车票了")print("终于可以回家陪伴父母了,珍惜~~~")else: # 条件不成立则执行 elseprint("没有车票,不能上车")print("我要再想想其它的办法")
chePiao = 1 # 用1代表有车票,0代表没有车票
if chePiao == 1: # 判断条件
print("还好买到车票了")
print("终于可以回家陪伴父母了,珍惜~~~")
else: # 条件不成立则执行 else
print("没有车票,不能上车")
print("我要再想想其它的办法")
实际操作:
执行过程:
(5)if-eilf-else 语句
# 举个栗子score = 77 # 代表分数if score>=90 and score<=100:print('本次考试,等级为A')elif score>=80 and score<90:print('本次考试,等级为B')elif score>=70 and score<80:print('本次考试,等级为C')elif score>=60 and score<70:print('本次考试,等级为D')elif score>=0 and score<60:print('本次考试,等级为E')
score = 77 # 代表分数
if score>=90 and score<=100:
print('本次考试,等级为A')
elif score>=80 and score<90:
print('本次考试,等级为B')
elif score>=70 and score<80:
print('本次考试,等级为C')
elif score>=60 and score<70:
print('本次考试,等级为D')
elif score>=0 and score<60:
print('本次考试,等级为E')
实际操作:
执行过程:
二、Python 循环语句
(1)for 循环
# 举个栗子name = '天下第一帅'for x in name:print(x)
name = '天下第一帅'
for x in name:
print(x)
实际操作:
执行过程:
(2)while 循环
# 举个栗子count = 1 # 表示为次数while (count < 9): print( 'count 运行次数:', count) count = count + 1print("while 循环条件不满足 count 等于 9,退出 while 循环")
count = 1 # 表示为次数
while (count < 9):
print( 'count 运行次数:', count)
count = count + 1
print("while 循环条件不满足 count 等于 9,退出 while 循环")
实际操作:
(3)while 死循环
# 举个栗子count = 0while True: # 判断条件一直为真,那么就会一直进行循环print("count:",count)count += 1 # count = count + 1
count = 0
while True: # 判断条件一直为真,那么就会一直进行循环
print("count:",count)
count += 1 # count = count + 1
实际操作:
三、Python 循环控制
(1)break 结束循环
# 举个栗子count = 0while True:print('正在执行第'+str(count)+'循环')count += 1if count == 10:print('检测到 count 等于 10 将执行 break 退出循环')breakprint('退出循环成功')
count = 0
while True:
print('正在执行第'+str(count)+'循环')
count += 1
if count == 10:
print('检测到 count 等于 10 将执行 break 退出循环')
break
print('退出循环成功')
实际操作:
(2)continue 退出当前循环
# 举个栗子count = 0while count < 15:count += 1if count == 10:print('检测到 count 等于 10 将执行 continue 跳过当前循环')continueprint('正在执行第'+str(count)+'循环')
count = 0
while count < 15:
count += 1
if count == 10:
print('检测到 count 等于 10 将执行 continue 跳过当前循环')
continue
print('正在执行第'+str(count)+'循环')
实际操作:
四、迭代器与生成器
(1)可迭代对象
# 举个栗子list1 = [1,2,3,4]dict1 = {"a":1,"b":2,"c":3}tuple1 = (1,2,3,4)for i in list1print(i)
list1 = [1,2,3,4]
dict1 = {"a":1,"b":2,"c":3}
tuple1 = (1,2,3,4)
for i in list1
print(i)
实际操作:
(2)不可迭代对象
# 举个栗子age = 17for i in age:print(i)
age = 17
for i in age:
print(i)
实际操作:
(3)迭代器
定义
使用
# 举个栗子name = '我最帅,不接受反驳'name = iter(name)
name = '我最帅,不接受反驳'
name = iter(name)
实际操作:
(4)生成器
定义
创建生成器的方法1
# 举个栗子# a = [item*2 for item in range(5)] 这个是列表推导式# a = (item*2 for item in range(5)) 这个是生成器# 不同的地方在于 列表推导式使用中括号,生成器使用圆括号. 举个栗子
# a = [item*2 for item in range(5)] 这个是列表推导式
# a = (item*2 for item in range(5)) 这个是生成器
# 不同的地方在于 列表推导式使用中括号,生成器使用圆括号.
实际操作:
创建生成器方法2
def fibonacci(n):# 定义斐波那契数列的前2个值a = 0b = 1# 定义当前的位置current_index = 0print("------------1111-----------")while current_index < n:# 定义要返回的值result = a# ⽣成新的 a、b值a,b =b,a+b# 让当前值+1current_index += 1print("-----------2222----------")yield resultprint("-----------3333------------")# ⽣成器,⽣成斐波那契数列fib = fibonacci(5)value = next(fib)print(value)value = next(fib)print(value)
# 定义斐波那契数列的前2个值
a = 0
b = 1
# 定义当前的位置
current_index = 0
print("------------1111-----------")
while current_index < n:
# 定义要返回的值
result = a
# ⽣成新的 a、b值
a,b =b,a+b
# 让当前值+1
current_index += 1
print("-----------2222----------")
yield result
print("-----------3333------------")
# ⽣成器,⽣成斐波那契数列
fib = fibonacci(5)
value = next(fib)
print(value)
value = next(fib)
print(value)
操作结果:
使⽤了yield关键字的函数不再是函数,⽽是⽣成器。(使⽤了yield的函数就是⽣成器)
特点
五、异常
(1)异常介绍
# 举个小栗子print(name) # 很简单的输出 name 变量数据
print(name) # 很简单的输出 name 变量数据
实际操作:
说明:
异常
(2)捕获异常
try ... except ...捕获异常:
# 先举个栗子
try:print('-----test--1---')print(name)print('-----test--2---')except NameError:print('使用 try...except...成功捕获到异常')
print('-----test--1---')
print(name)
print('-----test--2---')
except NameError:
print('使用 try...except...成功捕获到异常')
实际操作:
说明:
小总结
except ...捕获多个异常:
try:print('-----test--1---')open('123.txt','r') # 以 r 只读方式,打开文件 123.txtprint('-----test--2---')except NameError:print ('使用 try ... except ... 捕获到 NameError 类型错误')
print('-----test--1---')
open('123.txt','r') # 以 r 只读方式,打开文件 123.txt
print('-----test--2---')
except NameError:
print ('使用 try ... except ... 捕获到 NameError 类型错误')
实际操作:
原因:
修改代码:
try:print('-----test--1---')open('123.txt','r') # 以 r 只读方式,打开文件 123.txtprint('-----test--2---')except FileNotFoundError:print ('使用 try ... except ... 捕获到 FileNotFoundError 类型错误')
print('-----test--1---')
open('123.txt','r') # 以 r 只读方式,打开文件 123.txt
print('-----test--2---')
except FileNotFoundError:
print ('使用 try ... except ... 捕获到 FileNotFoundError 类型错误')
try:print('-----test--1---')open('123.txt','r') # 如果123.txt文件不存在,那么会产生 IOError 异常print('-----test--2---')print(num)# 如果num变量没有定义,那么会产生 NameError 异常except (IOError,NameError):#如果想通过一次except捕获到多个异常可以用一个元组的方式print('捕获到 IOError 或者 NameError 错误')
print('-----test--1---')
open('123.txt','r') # 如果123.txt文件不存在,那么会产生 IOError 异常
print('-----test--2---')
print(num)# 如果num变量没有定义,那么会产生 NameError 异常
except (IOError,NameError):
#如果想通过一次except捕获到多个异常可以用一个元组的方式
print('捕获到 IOError 或者 NameError 错误')
实际操作:
注意:
获取异常的信息描述
捕获所有异常
try: print(name) except: print('捕获到程序出现异常')# 结果:捕获到程序出现异常
print(name)
except:
print('捕获到程序出现异常')
# 结果:捕获到程序出现异常
try:print(name)except Exception as result:print('捕获到程序出现异常:',result)
print(name)
except Exception as result:
print('捕获到程序出现异常:',result)
实际操作:
else 无异常则执行
try: num = 100 print(num)except NameError as errorMsg: print('产生错误了:%s'%errorMsg) else: print('没有捕获到异常,真高兴')
num = 100
print(num)
except NameError as errorMsg:
print('产生错误了:%s'%errorMsg)
else:
print('没有捕获到异常,真高兴')
实际操作:
try ... finally ...
# 举个栗子try: num = 100 print(num)except NameError as errorMsg: print('产生错误了:%s'%errorMsg) else: print('没有捕获到异常,真开心')finally: # 可以和 else 一起使用. print('哎,对,就是开心~')
try:
num = 100
print(num)
except NameError as errorMsg:
print('产生错误了:%s'%errorMsg)
else:
print('没有捕获到异常,真开心')
finally: # 可以和 else 一起使用.
print('哎,对,就是开心~')
实际操作:
(3)异常的传递
函数嵌套
# 举个例子def func1():print("---正在执行 func1 ---开始")print(num)print("---正在执行 func1 ---结束")def func2():try:print("---正在执行 func2 ---开始")func1()print("---正在执行 func2 ---结束")except:print("---func2 捕捉到异常---")print("---无论func1 是否有异常,都执行这行代码---")func2()
def func1():
print("---正在执行 func1 ---开始")
print(num)
print("---正在执行 func1 ---结束")
def func2():
try:
print("---正在执行 func2 ---开始")
func1()
print("---正在执行 func2 ---结束")
except:
print("---func2 捕捉到异常---")
print("---无论func1 是否有异常,都执行这行代码---")
func2()
实际操作:
(4)抛出自定义异常
class ShortInputException(Exception):'''自定义的异常类'''def __init__(self, length, atleast):#super().__init__()self.length = lengthself.atleast = atleastdef main():try:s = input('请输入 --> ') # 根据输入的字符串的长度进行判断if len(s) < 3:# raise引发一个你定义的异常raise ShortInputException(len(s), 3)except ShortInputException as result:#x这个变量被绑定到了错误的实例print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))else:print('没有异常发生.')main()
'''自定义的异常类'''
def __init__(self, length, atleast):
#super().__init__()
self.length = length
self.atleast = atleast
def main():
try:
s = input('请输入 --> ') # 根据输入的字符串的长度进行判断
if len(s) < 3:
# raise引发一个你定义的异常
raise ShortInputException(len(s), 3)
except ShortInputException as result:#x这个变量被绑定到了错误的实例
print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))
else:
print('没有异常发生.')
main()
运行结果:
注意: