python------notes-------Fourth

模块

随机数模块:

应用于:抽奖、验证码…。

(1)随机整数

例:

>>> import random
>>> print(random.randint(1,43))#随机抽取整数,包含开始值和结束值
2

(2)随机小数(0~1之间的小数)

例:

>>> import random
>>> print(random.random())
0.46100718083091796

(3)随机范围:

含头不含尾,左闭右开,不包含结束值,步长值

>>> import random
>>> 
>>> print(random.randrange(0,10,2))#步长值:2
0

(4)随机序列中的某个值:

>>> import random
>>> print(random.choice(["a","1","b","2"]))
1

(5)纯数字验证码:

例:

>>> import random
>>> 
print(random.randint(111111,999999))#范围:111111~999999
#您的6位验证码为:
667766

(6)大写字母加数字验证码:

例:

def verification_code(n):
	code=""
	for i in range(n):
		num=ranndom.randint(0,9)
		if num%2==0:
			code+=str(random.randint(0,9))#将数字强制转成字符串
		else:
			code+=chr(random.randint(65,90))
		return code
	print(verification_code(4))


时间模块:

1、三个表示方法:
(1):时间戳(小数1970-01-01 00:00:00(格林威治时间))
时间戳的作用:方便计算机储存,方便计算
例:

import time 
print(time.time())#秒数
#运行结果:
1605617302.9404888
print(time.time()/60/60/24/365)#年
#运行结果:
50.91379527456859

(2)时间元组(命名元组类型)中间形态方便获取到值。
时间元组功能:作为函数的参数,开发时使用
例:

print(time.localtime())#时间元组
#运行结果:

```python
time.struct_time(tm_year=2020, tm_mon=11, tm_mday=17, tm_hour=20, tm_min=53, tm_sec=2, tm_wday=1, tm_yday=322, tm_isdst=0)
print(time.localtime().tm_year)#获取年份
#运行结果:
2020

(3)时间字符串:(格式化时间字符串,(给时间一个显示的格式))
例:

print(time.strftime("%Y-%M-%d  %H:%M:%S"))#输出年月日时分秒
#运行结果:
2020-59-17  20:59:47


2、三者之间的转化
时间戳->时间元组->时间字符串
例:

import time 
print(time.localtime())#时间元组
#将时间元组转换成时间字符串
print(time.strftime("%Y-%M-%d  %H:%M:%S",time.localtime()))
#运行结果:
time.struct_time(tm_year=2020, tm_mon=11, tm_mday=17, tm_hour=21, tm_min=5, tm_sec=51, tm_wday=1, tm_yday=322, tm_isdst=0)
2020-05-17  21:05:51

逆向:时间字符串->时间元组->时间戳

import time 
print(time.strftime("%Y-%M-%d  %H:%M:%S",time.localtime(213142143)))
#结果:
1976-09-03  06:09:03

睡眠:
例:

import time 
time.sleep(3)#暂停三秒
print('Bye!')
#运行结果:暂停三秒再执行
Bye!

hashlib加密模块(不可逆):

import hashlib
md5=hashlib.sha256("123456.".encode("utf-8"))
md5.update("""(☞^o^) ☞""".encode("utf-8"))
print(md5.hexdigest())
#运行结果:
be1f85c0a8065912d839eea0c765ebbe975de0c8702e1082a83e441670e0da98
  • 实现数据序列化与反序列化
  • 序列化:将数据对象转成字符串用于网络数据传输和数据存储
  • 反序列化:将特定格式字符串转为数据对象的,用于在程序中运行
  • json目前最流行的一种数据格式,最初是JavaScript中的格式,后被各大语言所支持。目前是不通语言代码之间进行数据通信的首选格式。
  • json格式 字符串
    “{key:value1,value2…}”
  • js与python的比较:
jspython
字符串""字符串""and’’
数组列表/元组
对象字典
true/falseTrue/False
  • 例:
import json
dic={
	'name':'sunshine',
	'age':20,
	'email':'123456@..com',
	'tuple':(1,2,3,4,5,6,7,True,False)
}
print(dic)
#运行结果:
{'name': 'sunshine', 'age': 20, 'email': '123456@..com', 'tuple': (1, 2, 3, 4, 5, 6, 7, True, False)}

json模块中常用的功能:
(1)、json.dump(obj,fp)将obj对象转换成JSON字符串输出到fp流中,fp是一个支持write()方法的类文件对象。
(2)、json.dumps(obj):将obj对象转换位JSON字符串,并返回该JSON字符串。
(3)、json.load(fp):从fp流读取JSON字符串,将其回复成JSON对象,其中fp是一个支持write()方法的类文件对象。
(4)、json.loads(s):将JSON字符串s回复成python对象。

  • dumps导出为json字符串
  • loads加载为python对象
import json
dic={
	'name':'sunshine',
	'age':20,
	'email':'123456@..com',
	'tuple':(1,2,3,4,5,6,7,True,False)
}
data=json.dumps(dic)
print(type(data))#类型
print(data)
#结果:
<class 'str'>
{"name": "sunshine", "age": 20, "email": "123456@..com", "tuple": [1, 2, 3, 4, 5, 6, 7, true, false]}


import json
dic={
	'name':'sunshine',
	'age':20,
	'email':'123456@..com',
	'tuple':(1,2,3,4,5,6,7,True,False)
}
with open("my.json","w",encoding="utf-8") as f:
	json.dump(dic,f)
with open("my.json","r",encoding="utf-8") as f:
	obj=json.load(f)
print(obj["email"])#利用键值对取值。

异常处理

  1. 异常是一个在程序执行过程中发生,影响了程序的正常执行的事件。(一般情况下,在python无法正常处理程序时就会发生一个异常)
  2. 异常时python对象,表示一个错误。
  3. BUG臭虫.错误.debug调试;
  4. 当python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
  5. python处理程序运行中出现的异常和错误的两个功能:
    (1)、异常处理:让程序不报错,(不终止运行,可以提示错误,记录进错误日志)。
    (2)、断言(Assertions):在需要的时候报错。

运行时发现的错误被称为异常。
例;

>>> 16/0 #0不能作为除数

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    16/0
ZeroDivisionError: division by zero

>>> a+3*2 #a未定义

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    a+3*2
NameError: name 'a' is not defined
>>> 

>>> '6'+1 #字符串不能和整型数字相加

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    '6'+1
TypeError: can only concatenate str (not "int") to str

1、异常捕获:

try—> :执行代码
excep–>:发生异常时所执行的代码
else–>:可选择,没有捕获到异常执行的代码
finally–>:可选择,有没有捕获到异常都会执行的代码
例:

try:
	#编写又可能错误的代码
	a=''
except Exception as e:
	#当代码有异常时执行,无异常时不执行
	#作用:1.错误时只提示,不中断
	#     2.写入错误日志
	#	  3.不久措施,让之后的代码正常执行
	print("有%s错误了呦,原因是:%s %(Exception,e)")
else:
	#只当程序正常执行(可选)
	print("没有错误哦!","a=",a)
finally:
	#不论是否报错都会执行
	for i in range(6):
		print(i)
#运行结果:
没有错误哦! a= 
0
1
2
3
4
5

2、python标准异常:

  • BaseException:所有异常的父类
  • SystemExit:解释器请求退出
  • KeyboardInterrupt:用户中断执行(通常ctrl+c)
  • Exception:常规错误父类
  • NameError: name ‘a’ is not defined
  • TyepError: Can’t convet ‘int’ object to str implictly
  • IndexError: list index out of range
  • SyntaxError: unexpected EOF while parsing
  • IndentationError: unexpected indent
  • FileNotFoundError:[Errno 2] No sunch file or directory: ‘a.txt’
  • ImportError: No module named ‘mathss’
  • AttributeError:‘str’ object has no attribute’abc’
    3、显式地引发异常:
  • raise通过raise显式地引发异常,一旦执行raise语句,raise后面的语句将不能执行。
  • raise例:
def my(number):
	if number<1:
		raise Exception("Invalid number!",number)#强制触发异常,并传入两个参数
		#触发异常后不执行后面的代码
my(-2)
#运行结果:
Traceback (most recent call last):
  File "D:\python\a.py", line 53, in <module>
    my(-2)
  File "D:\python\a.py", line 51, in my
    raise Exception("Invalid number",number)#强制触发异常,并传入两个参数
Exception: ('Invalid number', -2)

4、断言:手动引发异常:

assert语句用于检测某个条件表达式是否为真。assert语句又称为断言语句,assert认为检测的表达式永远为真,if语句中的条件判断都可以使用assert语句检测。
assert “mode” in [ “train”,“eval”,“inderence”]
注意:如果"mode"不在其中,则触发异常。

#断言:在特定情况下触发执行某个错误
name='sunshine'
assert name == 'sunshine',NameError("用户名不正确")
age=20
class AgeError(Exception):
	"""docsrting for ClassName"""
	pass
age=17
if age <18:
	raise AgeError("您的年龄太小了,")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值