千纸鹤

  博客园  ::  :: 新随笔  ::  ::  :: 管理
  5 随笔 :: 70 文章 :: 0 评论 :: 9301 阅读

1、异常处理函数

a.异常处理概念

即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行

b.异常处理作用

为了保证程序的稳定性和健壮性
稳定性:保证程序正常稳定的运行
健壮性:能够自己处理一些异常信息,处理异常

c.异常处理语法(基础版)

第一种方式:
try:
  要执行的代码
except 错误类型1:
  出现错误的代码

try:
  num = int(input('请输入整数:'))
  print(num)
except:
  print('请输入正确的整数')

第二种方式:
try:
  要执行的代码
except 错误类型1:
  出现错误的代码
except 错误类型2:
  出现错误的代码

try:
  num=int(input('请输入整数:'))
  result=5/num
  print(result)
except ValueError:
  print('输入的值有错误,不要瞎写')
except ZeroDivisionError:
  print('0不能被整除')
print('请输入正确的整数')

第三种方式:
try:
  要执行的代码
except (错误类型1,错误类型2):
  出现错误的代码

try:
  num=int(input('请输入整数:'))
  result=5/num
  print(result)
except (ValueError,ZeroDivisionError):
  print('请输入正确的整数,不要瞎写')
print('请输入正确的整数')

d.异常处理演练

a.输入错误了,还想让他继续运行,直到输入正确的时候就不运行

while True:
  try:
    num=int(input('请输入整数:'))
    print(num)
    break
  except:
    print('请输入正确的整数')
  print('输完了')

b.想要有错误提示就用 as 变量名捕获到

try:
  num=int(input('请输入整数:'))
  result=5/num
  print(result)
except Exception as e:
  print('所有的错误,我都在这里处理掉%s' %e)

e.异常错误类型

a.BaseException:所有异常的基类

b.Exception:常规错误的基类

c.ZeroDivisionError:除(或取模)零

d.IOError:输入/输出操作失败

e.IndexError:序列中没有此索引

f.ValueError:传入无效的参数

f.异常处理语法(升级版)

try:
  尝试的代码
except 错误类型 as e:
  打印错误的信息
except Expection as e:
  打印错误的信息
else:
  没有异常就会去执行
finally:
  无论是否有异常都会执行

try:
  num=int(input('请输入整数'))
  result=5/num
  print(result)
except ZeroDivisionError as e:
  print('0错误')
except ValueError as e:
  print('值错误')
except Exception as e:
  print('所有的错误,我都在这里处理掉%s' %e)
else:
  print('没有异常就会去执行')
finally:
  print('无论是否有异常都会执行') 

g.自定义异常:raise 主动抛出异常

需求:
定义一个密码函数,提示输入用户密码
如果用户输出的长度大于8,抛出异常 自定义一个异常
如果用户输出的长度小于等于8,返回密码

def input_pwd():
  pwd=input('请输入密码长度:')
  if len(pwd)<=8:
    return pwd
  aa=Exception('密码超出8位,请修改')
  raise aa
a=input_pwd()
print(a)

h.异常处理顺序

  try,except,else,finall

正常执行:try正常执行,执行else不执行except ,执行之后,执行 finall;

异常执行:try异常执行,不执行else执行except ,执行之后,执行finall;

2、时间日期模块

a.导入calendar:import calendar

b.输出月日历

cal=calendar.month(2022,4)
print(cal)

输出结果:

April 2022
Mo Tu We Th Fr Sa Su
        1   2   3
 4    5   6   7  8  9   10
11   12  13  14 15 16  17
18  19  20 21 22 23 24
25  26 27 28 29 30

c.输出年日历

year=calendar.calendar(2022)
print(year)

d.时间戳、时间元组、日期转化

a.导入时间:import time

b.时间戳(time.time())

a.时间戳概念:描述某个时间到另外一个时间相隔的秒数(某个时间格林威治时间1970年1月1日0000  北京时间1970,1,1,8点)

b.当前时间戳
  print(time.time())  输出结果:1650432080.583152

c.时间元组(time.localtime())

a.年月日时分秒|周天|年天|夏令时

print('当前时间元组',time.localtime())
  输出结果:time.struct_time(tm_year=2022, tm_mon=4, tm_mday=20, tm_hour=14, tm_min=3, tm_sec=41, tm_wday=2, tm_yday=110, tm_isdst=0)
print('当前时间元组',time.localtime(1650434206.816021))
  输出结果:time.struct_time(tm_year=2022, tm_mon=4, tm_mday=20, tm_hour=14, tm_min=3, tm_sec=31, tm_wday=2, tm_yday=110, tm_isdst=0)
print('当前时间元组',time.localtime(time.time()))
  输出结果:time.struct_time(tm_year=2022, tm_mon=4, tm_mday=20, tm_hour=14, tm_min=3, tm_sec=41, tm_wday=2, tm_yday=110, tm_isdst=0)

b.以数字的形式去表示

  t=(2021,9,9,21,48,21,3,252,0) 

      print(t)  输出结果:(2022, 4, 20, 13, 30, 27, 2, 110, 0)

c.元组转为时间戳 time.mktime()

a.指定时间转为时间戳
  print('指定时间元组转为时间戳:',time.mktime((2022,3,20,0,0,0,0,0,0)))  

    输出结果:指定时间转为时间戳: 1647705600.0
b.当前时间转为时间戳
  print('当前时间元组转为时间戳:',time.mktime(time.localtime()))     

    输出结果:当前时间转为时间戳: 1650435005.0

d.日期转换

a.元组转化成日期:time.asctime()
  print(time.asctime(time.localtime(time.time())))    输出结果:Wed Apr 20 13:36:25 2022
b.时间改为系统时间:time.strftime()
  print(time.strftime('%Y-%m-%d %H-%M-%S'))  输出结果:2022-04-20 13-38-21

 

posted on   隆江猪脚饭  阅读(79)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示