Python语法学习-3
第七章 异常处理
7.1 什么是异常
7.2 python中常见的异常类型
# NameError
print('hello world')
#prlnt('hello world') # 函数名拼写错误
a = '111'
print(a)
# print(aa) # 变量名拼写错误
# print(b) # 使用一个不存在的变量# SyntaxError IndentationError
# if 'he' == 'hi':
# print('hello')
# TypeError
# print(3+'2')
# AttributeError
tp = (1,3,5)
# tp[2]=4
# print(tp)
# tp.append(2)
# print(tp)
# KeyError
d = {1:2,3:4}
# print(d[2])
# IndexError
print(tp[4])
7.3 try-except语句
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
# print(1+'1')
try:print("有可能出现异常的代码")print(1+'1')
except:print("如果出现了异常,进入改代码块执行")
# ZeroDivisionError: division by zero
# n = 5/0
try:n = int(input("请输入一个数字:"))n = 5/nprint(n)
except ZeroDivisionError as e:print("除数不能为0")print("原始报错信息", e)
except:print('请输入一个数字')
else:print('运行没有被except语句捕获,执行else模块')
finally:print('无论如何,都要执行finally模块')
7.4 raise关键字
try:pwd = input("请输入你的密码:")if len(pwd)<8:raise Exception("密码的长度不够,请输入一个8位以上的密码")
except Exception as e:print(e)
7.5 本章总结
7.6 案例实践
简单的计算器
while True:try:op = input('请输入一个四则运算算式(例如1+2):')if '+' in op:a = op.split('+')result = int(a[0])+int(a[1])print(result)elif '-' in op:a = op.split('-')result = int(a[0])-int(a[1])print(result)elif '*' in op:a = op.split('*')result = int(a[0]) * int(a[1])print(result)elif '/' in op:a = op.split('/')result = int(a[0]) / int(a[1])print(result)elif op == 'C':print('感谢您使用本计算器!')breakelse:raise Exception('请按1+2这个格式输入算式!')except ZeroDivisionError:print('注意除法运算,除数不能为0!')except Exception as e:print(e)
第八章 函数
8.1 函数的概念
# 形式参数
def sum_2(a,b):return a+b# 实际参数
result = sum_2(9,8)
# a = len('get')
# print(a)
# print(result)
8.2 默认参数
# n为默认参数,缺省参数
def power(x,n=2):return x**n
a = power(4,3)
b = power(5,3)
c = power(6)
a = int('16',8)
print(a)
# 练习
def infos(name,age=24,gender='女'):return '大家好,我叫%s,我今年%d岁,我是一名%s生' %(name,age,gender)
s = infos('mia',24,'女')
lily = infos('lily')
jack = infos('jack',gender='男')
print(jack)
print(lily)
8.3 可变参数
# 可变参数
def total(*args):print(args)result = 0for i in args:result+=i*ireturn result
result = total(1,4,5,6,7,8,3)
print(result)
result=total(3,4,5)
print(result)
a = [1,2,3,4]
result = total(*a)
print(result)
# 可变参数,接受字典
def f(**kwargs):for k,v in kwargs.items():print(k,v)
d = {'name':'xiaoming','age':18}
f(**d)
8.4 变量的作用域
# 全局变量
num1 = 10 # 不可变数据类型
list1 = [1, 2, 3, 4, 5] # 可变数据类型def f():global num1 # 声明在f中使用的num1是全局变量num1num2 = 20 # 局部变量num1 = 20list1[2] = 8print('在函数f中打印num1的值', num1)print('在函数f中打印list1的值', list1)print('num2的值', num2)f()
print('在函数f外打印num1的值', num1)
print('在函数f外打印list1的值', list1)
8.5 匿名函数
# def add(a,b):
# return a+b
#
# fun = lambda a,b:a+b
# result = fun(5,2)
# print(result)a = [1, 2, 3, 4, 5]
result = map(lambda x:x**2,a) # 映射
print(list(result))# reduce 累积
from functools import reduce
result = reduce(lambda x,y:x+y,a)
print(result)# filter 过滤
result = filter(lambda x:x%2==0, a)
print(list(result))# 举例
a = [1,2,3,40,5,6,0,6,0,5]
result = filter(lambda x:x!=0, a)
print(list(result))# 将a转换成整数:12340560605
# 写法1
result = 0
mul = 1
for i in a[::-1]:result = result + i*mulmul = mul*10**len(str(i))
print(result)# 写法2
result = reduce(lambda x,y:x*10**len(str(y))+y,a)
print(result)
8.6 内置函数