一、time库
-
当我们想知道时间的时候,我们会看一看墙上的挂钟或者手上的手表。那么问题来了!我们的计算机先生是怎么知道时间的呢?
处理时间是程序最常用的功能之一。实际上,计算机只会维护一个挂钟时间(wall clock time),这个时间是从某个固定时间起点到现在的时间间隔,即时间戳。时间间隔是以秒为单位的浮点小数。 -
Python具有良好的时间和日期管理功能。
-
time库是Python提供的处理时间的标准库。time库提供了系统级的精准计时器的计时功能,可以用来分析程序性能,也可以让程序暂停运行时间。
-
Python中获取时间的常用方法是,先得到时间戳,再将其转换成想要的时间格式。
? 了解一下时间戳的概念。
时间戳:格林威治时间1970年01月01日00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
? 了解一下元组struct_time的概念及内容。
日期、时间是包含许多变量的,所以在Python中定义了一个元组struct_time将所有这些变量组合在一起,包括:4位数年、月、日、小时、分钟、秒等,为:struct_time(tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,
tm_yday,tm_isdst)。
所有变量及对应的struct_time元组的属性及要求如下:
序号 | 变量字段 | 对应的struct_time元组的属性 | 值 |
---|---|---|---|
0 | 4位数年 | tm_year | 如:2019 |
1 | 月 | tm_mon | 1 到 12 |
2 | 日 | tm_mday | 1 到 31 |
3 | 小时 | tm_hour | 0 到 23 |
4 | 分钟 | tm_min | 0 到 59 |
5 | 秒 | tm_sec | 0 到 61 (60或61 是闰秒) |
6 | 一周的第几日 | tm_wday | 0到6 (0是周一) |
7 | 一年的第几日 | tm_yday | 1 到 366(儒略历) |
8 | 夏令时 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
? time库主要包括三类函数:
1、时间获取:time() 、ctime() 、gmtime() 、localtime() 等
2、时间格式化:strftime() 、 strptime()
3、程序计时:sleep()、perf_counter()
1.1 获取当前时间戳
即计算机内部时间值,浮点数
语法:time.time()
>>>import time # 导入time库
>>>t = time.time() # 返回当前时间戳
>>>print("当前时间戳为:", t)
当前时间戳为: 1554291214.2258205
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
1.2 将一个struct_time转换成时间戳
语法:time.mktime(tuple)
>>> time.mktime(time.localtime())
1478942416.0
1.3 获取当前时间
(1)语法:time.gmtime([secs]):表示为计算机可处理的时间格式
将一个时间戳(以秒表示的时间)转换为UTC中的struct_time,其中dst(夏令时)标志始终为零。
如果未提供secs或None,则使用由time()返回的当前时间。忽略秒的分数。
>>> import time
>>> time.gmtime()
time.struct_time(tm_year=2019, tm_mon=4,
tm_mday=3, tm_hour=12, tm_min=52, tm_sec=36,
tm_wday=2, tm_yday=93, tm_isdst=0)
(2)语法:time.localtime([seconds])
与gmtime()相似,但结果是转换为本地时间。
如果未提供secs或None,则使用由time()返回的当前时间。
若给定时间使用的是夏令时,就将dst标志设置为1。
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=4,
tm_mday=6,tm_hour=13, tm_min=8, tm_sec=44,
tm_wday=5, tm_yday=96, tm_isdst=0)
- gmtime()与localtime()的异同点:
同:
^ 两者的参数相同,都是时间戳。若没有提供参数,都会自动调用time .time()得到时间戳。
^ 两者返回的结果格式相同,都是元组struct_time。
异:
^两者返回的时间是两个时区对相同时刻的时间表示。其中,gmtime()表示的是0时区的标准时间,而localtime()表示的是本地时区的时间。
(3)语法:time.ctime([secs]):以易读方式表示,返回字符串
把一个时间戳(用秒计算的浮点数)转换为一个表示本地时间的字符串。
如果参数secs未给出或为None,就使用由time()返回的当前时间。
>>>import time # 导入time库
>>> time.ctime()
'Wed Apr 3 20:50:27 2019'
(4)语法:time.asctime([t]):参数是元组,返回字符串
将 gmtime()或localtime() 返回的表示时间的元组(9个元素的元组)或struct_time 转换成一个字符串,格式:‘Sun Jun 20 23:21:051993’。
如果没有传入参数t,则使用localtime()返回的时间作为t。
- 首先,使用函数gmtime()、localtime()的返回值作为参数。
>>> import time
#提供一个反例:time()函数返回时间戳,不能作为asctime()的参数,注意错误提示。
>>> time.asctime(time.time())
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
time.asctime(time.time())
TypeError: Tuple or struct_time argument required
# 参数只能是元组或struct_time
>>> time.asctime(time.gmtime())
'Wed Jan 10 01:03:23 2018'
>>> time.asctime(time.localtime())
'Wed Jan 10 09:03:50 2018'
- 然后,自定义一个9个元素的元组作为参数。为了方便检查,我们首先使用gmtime()返回一个正确的时间元组,然后将各属性值拷贝到自定义元组中:
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=10, tm_hour=1,
tm_min=11, tm_sec=24, tm_wday=2, tm_yday=10, tm_isdst=0)
>>> tuple_time = (2018,1,10,1,11,24,2,10,0) #9个元素的元组
>>> time.asctime(tuple_time)
'Wed Jan 10 01:11:24 2018'
#若元组中元素个数不等于9个,将会报错
>>> tuple_time = (2018,10,1,1,11,24,2,10)
>>> time.asctime(tuple_time)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
time.asctime(tuple_time)
TypeError: function takes exactly 9 arguments (8 given)
- ctime()与asctime()的异同点:
异:两者参数不同。ctime([secs])的参数是时间戳(常用time.time()获得),而asctime([t])的参数是时间元组(常用localtime()或gmtime())。
同:两者输出时间的格式相同。
2、Python 获取格式化的时间
python中时间日期格式化符号:
指令 | 描述 |
---|---|
%a | 简化星期名称,如Sat |
%A | 完整星期名称,如Saturday |
%b | 简化月份名称,如Nov |
%B | 完整月份名称,如November |
%c | 当前时区日期和时间 |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%j | 年内的一天(001-366) |
%m | 月份(01-12) |
%M | 分钟数(00-59) |
%p | AM或PM,AM表示上午,PM表示下午 |
%S | 秒(00-59) |
%U | 一年中第几个星期(00-53)星期天为星期的开始 |
%w | 星期几(0-6),星期天为星期的开始 |
%W | 一年中第几个星期(00-53)星期一为星期的开始 |
%x | 本地日期,如’11/12/16’ |
%X | 本地时间,如’17:46:20’ |
%y | 简写年名称,00-99。如16 |
%Y | 完整年名称,000-9999。如2016 |
%Z | 当前时区名称(PST:太平洋标准时间) |
%% | 代表一个%号本身 |
2.1 time.strftime(format[, t])
将gmtime()或localtime()返回的时间元组或struct_time转换为与参数格式相同的字符串。
如果未提供t,则默认使用localtime()返回的当前时间。参数format[,t]必须是字符串。如果t中的任何字段超出允许范围,则会引发ValueError。
- 例:
>>> from time import localtime, strftime
# 格式化成2019-04-06 16:14:16形式
>>> print(strftime("%Y-%m-%d %H:%M:%S", localtime()))#定义一个时间输出格式
2019-04-06 16:14:16 #输出样式
# 格式化成Sat Apr 06 16:15:59 2019形式
>>> print(strftime("%a %b %d %H:%M:%S %Y", localtime()))
Sat Apr 06 16:15:59 2019
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) #显示时区的时间
'2018-01-10 13:10:28'
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) #显示本地时间
'2018-01-10 21:09:45'
>>> time.strftime("%Y-%m-%d %H:%M:%S")
#默认调用time.localtime()获取本地时间
'2018-01-10 21:11:19'
2.2 time.strptime(string [,format] )
- 相当于strftime()的逆函数
- 按照格式format(默认使用"%a %b %d %H:%M:%S %Y"),解析表示时间的字符串string。返回值是struct_time类型,类似于gmtime()或localtime()。
>>> import time
>>>a = "Sat Mar 28 22:24:24 2016"
>>>time.strptime(a, "%a %b %d %H:%M:%S %Y") # 等同于time.strptime(a)
time.struct_time(tm_year=2016, tm_mon=3, tm_mday=28,
tm_hour=22, tm_min=24, tm_sec=24, tm_wday=5, tm_yday=88, tm_isdst=-1)
>>>print(time.mktime(time.strptime(a))) # 将格式字符串转换为时间戳
1459175064.0
#字符串"30 Nov 00",设为"%d %b %y"格式输出
>>> time.strptime("30 Nov 00", "%d %b %y")
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30,
tm_hour=0, tm_min=0,tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
#注意默认值的填充
3. 程序计时
- 程序计时指测量起止动作所经历时间的过程。
3.1 测量时间:perf_counter()
需要调用两次,解释见下:
perf_counter()返回一个CPU级别的精确时间计数值,单位为秒。
由于这个计数值起点不确定,连续调用差值才有意义。
>>>start = time.perf_counter()
318.66599499718114
>>>end = time.perf_counter()
341.3905185375658
>>>end - start
22.724523540384666
3.2 产生时间:sleep(s)
S拟休眠的时间,单位是秒,可以是浮点数。
>>>def wait:
time.sleep(3.3)
>>>wait()
#程序将等待3.3秒后,再退出
二、datetime库
datetime模块用于date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1。
datetime库提供了以下五个类:
类 | 描述 | |
---|---|---|
1 | datetime.date | 表示日期,年月日组成 |
2 | datetime.datetime | 表示日期和时间 |
3 | datetime.time | 表示时间,时分秒及微秒组成 |
4 | datetime.timedelta | 表示时间间隔,即两个时间点的间隔 |
5 | datetime.tzinfo | 时区的相关信息 |
获取当前的日期和时间:
from datetime import datetime
now = datetime.now()
print(now)
print(type(now))
1 datetime.date类:
date类有三个参数,datetime.date(year,month,day),返回year-month-day
- year的范围是[MINYEAR, MAXYEAR],即[1, 9999];
- month的范围是[1, 12]。(月份是从1开始的,不是从0开始的 ?);
- day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天。
方法(前面都省略了datetime.) | 描述 | 描述 |
---|---|---|
date.max | date对象所能表示的最大日期 | >>> from datetime import * >>> import time >>> date.max datetime.date(9999, 12, 31) |
date.min | 对象所能表示的最小日期 | >>> from datetime import * >>> import time >>> date.min datetime.date(1, 1, 1) |
date.strftime() | 根据datetime自定义时间格式 | >>> date.strftime(datetime.now(), ‘%Y-%m-%d %H:%M:%S’) '2016-11-12 07:24:15 |
date.today() | 返回当前系统日期 | >>> date.today() datetime.date(2016, 11, 12) |
date.isoformat() | 返回ISO 8601格式时间 YYYY-MM-DD) | >>> date.isoformat(date.today()) ‘2016-11-12’ |
date.fromtimestamp() | 根据时间戳返回日期 | >>> date.fromtimestamp(time.time()) datetime.date(2016, 11, 12) |
date.weekday() | 根据日期返回星期几,周一是0,以此类推 | >>> date.weekday(date.today()) 5 |
date.isoweekday() | 根据日期返回星期几,周一是1,以此类推 | >>> date.isoweekday(date.today()) 6 |
date.isocalendar() | 根据日期返回日历(年,第几周,星期几) | >>> date.isocalendar(date.today()) (2016, 45, 6) |
2 datetime.datetime()类:
datetime类有很多参数,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]),返回年月日,时分秒。
方法 | 描述 | 举例 |
---|---|---|
datetime.datetime.ctime() | 返回一个日期时间的C格式字符串, 等效于time.ctime(time.mktime(dt.timetuple())) | |
datetime.datetime.now() | 返回当前系统时间 | >>> datetime.now() datetime.datetime(2016, 11, 12, 7, 39, 35, 106385) |
datetime.datetime.today() | 返回当前系统时间 (同datetime.datetime.now()) | >>> datetime.datetime.now() datetime.datetime(2016, 11, 12, 7, 39, 35, 106385) |
datetime.datetime.date() | 返回时间日期对象,年月日 | >>>datetime.date(datetime.now()) datetime.date(2016, 11, 12) |
datetime.datetime.time() | 返回时间对象,时分秒 | >>>datetime.time(datetime.now()) datetime.time(7, 46, 2, 594397) |
datetime.datetime.now().date() | 返回当前日期时间的日期部分 | |
datetime.datetime.now().time() | 返回当前日期时间的时间部分 | |
datetime.datetime.fromtimestamp() | ||
datetime.datetime.replace() | ||
datetime.datetime.strftime() | 由日期格式转化为字符串格式 |
3 datetime.time类:
time类有5个参数,datetime.time(hour,minute,second,microsecond,tzoninfo),返回08:29:30。
1.datetime.time.replace()
2.datetime.time.strftime(format):按照format格式返回时间
3.datetime.time.tzname():返回时区名字
4.datetime.time.utcoffset():返回时区的时间偏移量
4 datetime.timedelta类:
# 获取昨天日期
>>> date.today() - timedelta(days=1)
datetime.date(2016, 11, 11)
>>> date.isoformat(date.today() - timedelta(days=1))
'2016-11-11'
# 获取明天日期
>>> date.today() + timedelta(days=1)
datetime.date(2016, 11, 13)
>>> date.isoformat(date.today() + timedelta(days=1))
'2016-11-13'
三、calendar库
- calendar 模块是python实现的unix 的 cal命令。它可以以标准的模式打印出给定年月的日历。
- 值得注意的是,默认情况下,这些日历将星期一作为一周的第一天,将星期日作为一周的最后一天(欧洲惯例)。 不过,我们可以使用
setfirstweekday()
方法来设置一周的第一天为星期日或h者其他工作日,指定的日期以整数形式给出。 - calendar模块主要由Calendar类与一些模块方法构成,Calendar类又衍生了一些子孙类来帮助我们实现一些特殊的功能。
3.1 setfirstweekday(firstweekday):指定一周的第一天
或者setfirstweekday(calendar.SUNDAY)
参数:MONDAY / TUESDAY / WEDNESDAY / THURSDAY / FRIDAY / SATURDAY / SUNDAY
指定一周的第一天,0是星期一,…,6为星期日
>>>import calendar
# 将星期日设置为一周第一天
>>>calendar.setfirstweekday(firstweekday=6)
#方法二
>>>calendar.setfirstweekday(calendar.SUNDAY)
3.2 firstweekday():返回一周的第一天
返回一周的第一天,0是星期一,…,6为星期日。
一般和setfirstweekday(firstweekday)
结合在一起。
>>>import calendar
# 将星期日设置为一周第一天
>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.firstweekday())
> 6
#方法二
>>> calendar.setfirstweekday(calendar.SUNDAY)
>>> calendar.firstweekday()
6
3.3 isleap(year):判断闰年
判断指定是否是闰年,闰年为True,平年为False。
>>>import calendar
# 2018年是平年,所以为False
>>>calendar.isleap(2018)
False
# 2008年是闰年,所以为True
>>>print(calendar.isleap(2008))
True
3.4 leapdays(y1, y2):y1年到y2年的闰年数
返回y1与y2年份之间的闰年数量,y1与y2皆为年份。
包括起始年,不包括结束年。
>>>import calendar
# 2008到2011之间只有2008年是闰年,所以数量为1
>>>print(calendar.leapdays(2008, 2011))
1
3.5 weekday(year, month, day):获取指定日期为星期几
>>>import calendar
# 2018-08-08正是星期三,千万别忘记2代表的是星期三
>>>print(calendar.weekday(2018, 8, 8))
2
3.6 weekheader(n):返回包含星期的英文缩写
返回包含星期的英文缩写,n表示英文缩写所占的宽度。
>>>import calendar
>>>print(calendar.weekheader(4))
Mon Tue Wed Thu Fri Sat Sun
>>>print(calendar.weekheader(1))
S M T W T F S
>>>print(calendar.weekheader(5))
Sun Mon Tue Wed Thu Fri Sat
3.7 monthrange(year, month)
返回一个由一个月第一个天的星期与当前月的天数组成的元组
3.8 monthcalendar(year, month)
返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期。
>>>import calendar
>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.monthcalendar(2018, 8))
############### 打印结果如下 ###############
[[0, 0, 0, 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, 31, 0]]
3.9 prmonth(theyear, themonth, w=0, l=0)
打印一个月的日历,theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行。
>>>import calendar
>>>calendar.setfirstweekday(firstweekday=6)
>>>calendar.prmonth(2018, 8)
############### 打印结果如下 ###############
August 2018
Su Mo Tu We Th Fr Sa
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 31
3.10 month(theyear, themonth, w=0, l=0)
返回一个月的日历的多行文本字符串。theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行。
import calendar
calendar.setfirstweekday(firstweekday=6)
print(calendar.month(2018, 8))
############### 打印结果如下 ###############
August 2018
Su Mo Tu We Th Fr Sa
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 31
3.11 prcal(year, w=0, l=0, c=6, m=3)
打印一年的日历,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列。
>>>import calendar
>>> calendar.setfirstweekday(firstweekday = 6)
>>> calendar.prcal(2019,m=3)
###################################################################
2019
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6 7
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
3.12 calendar(year, w=2, l=1, c=6, m=3)
以多行字符串形式返回一年的日历,w每个单元格宽度,默认2,内部已做处理,最小宽度为2,l每列换l行,默认为1,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列。
import calendar
calendar.setfirstweekday(firstweekday=6)
print(calendar.calendar(2019, m=3))
############### 打印结果如下 ###############
2019
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6 7
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
四、random库
在使用python过程中会遇到随机数的使用,那么怎么使 a 随机生成一个数值呢,来研究一下random的部分程序。
1、随机浮点数
random.uniform() 用于生成指定范围内的浮点数
import random # 首先还是要导入random这个模块
a = random.uniform(2,10) # 两个参数,一个是上限,一下是下限
print(a)
结果:3.0268555183487953
2、随机整数
random.randint() 用于选取指定范围内的整数
a = random.randint(10,80)
print(a)
结果:35
random.randrange() 用于随机选取0—100之间的随机偶数
a = random.randrange(0,100,2)
print(a)
结果:54
3、随机字符
random.choice() 用于随机选取指定字符串中的字符
a = random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )
print(a)
结果:lemon
random.sample() 运行之后 a 就会随机选取字符串中的字符
a = random.sample('qwertyuiop',3) # 随机选3个
print(a)
结果:[‘p’, ‘e’, ‘i’]
4、随机洗牌
random.shuffle() 用于将一个列表中的元素打乱
a = ["Python", "is", "powerful", "simple", "and so on..."]
random.shuffle(a)
print(a)
结果:[‘powerful’, ‘simple’, ‘and so on…’, ‘is’, ‘Python’]