day04

    • 异常

    • 错误类型

1.1语法错误(Syntaxerrors)

代码编译时的错误,不符合Python语言规则的代码会停止编译并返回错误信息

1.缺少起始符号或结尾符号(括号、引号等)

2.缩进错误

3.关键词拼写错误

1n = 10

2. 异常(Exceptions)

相较于语法错误,异常比较难发现,因为它只在代码运行时才会发生,如类型错 误、数值错误、索引错误和属性错误等。

#语法错误包含在异常基类中

#异常通常由以下问题引起

•在定义函数之前就引用该函数

•调用不属于某个对象的方法或者属性

•试图将某个值转换为不恰当的数据类型

六种典型的异常

  1. 除零错误(ZeroDivisionError):除数为0

num = 10
print(num/0)
  1. 名称错误(NameError):变量使用前未进行申明或者初始化

  1. 类型错误(TypeError):某些函数或者方法只适用于特定的数据类型,如果对数据类型的操作不当,就会产生类型错误

a = "你好"
b = int(a)
  1. 数值错误(ValueError):在输入类型正确的情况下,具体输入值错误

  1. 索引错误(IndexError):超出序列长度的索引操作

list1 = [1, 2, 3, 4, 5, 6]
print(list1[10])
  1. 属性错误(AttributeError):方法或者属性不适用该对象

#总结

#捕获异常

代码编写环境自带的高亮显示

•便于发现常规语法错误

•但难于发现异常

#程序要遇到异常的时候,往往是直接中断,跳出执行。但是有些时候,我们需要在遇到异常的时候另外处理,而不是直接停止。

#解决方法:

1.try...except...语句

'''
try:
    将来可能会出错的代码
except:
    try中的代码出错后要做出的处理方案
'''
list1 = [1, 2, 3, 4, 5, 6]
try:
    print(list1[2])
except: # 只会在try中程序出错的情况下执行
    print("取了不该取的索引值")
print("数加科技")

2.try...except...else语句

list1 = [1, 2, 3, 4, 5, 6]
try:
    print(list1[10])
except:  # 只会在try中程序出错的情况下执行
    print("取了不该取的索引值")
else:  # 只有当try中的代码没有报错的时候执行(可写可不写,根据需求来决定)
    print("程序没有报错")
print("数加科技")

3.finally语句

list1 = [1, 2, 3, 4, 5, 6]
try:
    print(list1[2])
except:
    print("取了不该取的索引值")
finally:  # 无论try中的代码是否报错都会正常执行(可加可不加,根据需求来)
    print("你好")

# 当我们明确知道程序即将报错的时候,可以使用raise关键词将错误抛出

a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
if b == 0:
    raise ZeroDivisionError("输入除数b为0")
else:
    print(a / b)
print("数加科技")

2.re模块正则表达式(基础知识讲解)

1.匹配单个字符

# 写一个正则表达式

# 写一个要去被正则表达式处理的字符串

import re
pattern = "你好"
str1 = "今天天气真好,你好!!"
print(re.search(pattern, str1))

1.1匹配单个数字:\d

import re
print(re.match(r"lebron\d","lebron23").group())  ## .group()将匹配到的内容取出来

#\d只能匹配一位数字:

1.2限制单个字符范围: []

#1到5:[12345], [1-5]

import re
print(re.match(r"lebron[1-5]","lebron23").group())
print(re.match(r"lebron[12345]","lebron23").group())

#1-3或6-8:[123678], [1-36-8]

#1-3或a-c:[123abc], [1-3a-c]

1.3匹配单字符:\w

import re
print(re.match(r"lebron\w", "lebron23").group())

1.4匹配任意一个字符: .

import re
print(re.match(r"lebron.", "lebron23").group())

2.匹配多个字符

import re
print(re.match(r"数加科技.*", "数加科技"))  # .* 表示任意一个字符会出现0次或者0次以上
print(re.match(r"数加科技.+", "数加科技e"))  # .+ 表示任意一个字符会出现1次或者1次以上
print(re.match(r"数加科技.?", "数加科技"))  # .? 表示任意一个字符会出现0次或者1次
print(re.match(r"数加科技.{3}", "数加科技qwer"))  # {出现的次数} 限定要出现的次数
print(re.match(r"数加科技.{3,6}", "数加科技qwerty"))  # {m,n} 表示匹配m-n次数

3.匹配开头或结尾

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值