干货 | Python进阶系列之学习笔记(四)-LMLPHP

目录

  • 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判断结束------")

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

执行过程:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(2)比较运算符:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

实际操作:


 
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)逻辑运算符:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

实际操作:


 
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("我要再想想其它的办法")

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

执行过程:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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进阶系列之学习笔记(四)-LMLPHP

执行过程:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

二、Python 循环语

(1)for 循环


 
# 举个栗子name = '天下第一帅'for x in name:print(x)

name = '天下第一帅'

for x in name:

print(x)

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

执行过程:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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 循环")

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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进阶系列之学习笔记(四)-LMLPHP

三、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('退出循环成功')

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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)+'循环')

实际操作:干货 | Python进阶系列之学习笔记(四)-LMLPHP

四、迭代器与生成器

(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)

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(2)不可迭代对象


 
# 举个栗子age = 17for i in age:print(i)

age = 17

for i in age:

print(i)

实际操作:干货 | Python进阶系列之学习笔记(四)-LMLPHP

(3)迭代器

定义

使用


 
# 举个栗子name = '我最帅,不接受反驳'name = iter(name)

name = '我最帅,不接受反驳'

name = iter(name)

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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)) 这个是生成器

# 不同的地方在于 列表推导式使用中括号,生成器使用圆括号.

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

创建生成器方法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)

操作结果:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

使⽤了yield关键字的函数不再是函数,⽽是⽣成器。(使⽤了yield的函数就是⽣成器)

特点

五、异常

(1)异常介绍


 
# 举个小栗子print(name) # 很简单的输出 name 变量数据

print(name) # 很简单的输出 name 变量数据

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

说明:

异常

(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...成功捕获到异常')

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

说明:

小总结

干货 | Python进阶系列之学习笔记(四)-LMLPHP

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 类型错误')

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

原因:

修改代码:


 
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 错误')

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

注意:

获取异常的信息描述

干货 | Python进阶系列之学习笔记(四)-LMLPHP

捕获所有异常


 
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)

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

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('没有捕获到异常,真高兴')

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

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('哎,对,就是开心~')

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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()

实际操作:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

(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()

运行结果:

干货 | Python进阶系列之学习笔记(四)-LMLPHP

注意:

05-19 05:16