Python的time模块与random模块
《Python基础教程》(第三版)
模块time包含用于获取当前时间、操作时间和日期、从字符串中读取日期、将日期格式化为字符串的函数。
日期可表示为实数(从‘新纪元’1月1日0时起过去的秒数),也可表示为包含9个整数的元组。
如:tuple(2008,1,21,12,2,56,0,21,0)表示2008年1月21日12时2分56秒,这一天是星期一,2008年的第21天(不考虑夏令时)
Python日期元组中的字段
字段 | 值 |
---|---|
(0) 年 | 2002、2003等 |
(1) 月 | 1~12 |
(2) 日 | 1~31 |
(3) 时 | 0~23 |
(4) 分 | 0~59 |
(5) 秒 | 0~61 |
(6) 星期 | 0~6 |
(7) 儒略日 | 1~336 |
(8) 夏令时 | 0、1或-1 |
秒的取值范围考虑到了闰一秒和闰两秒的情况下,夏令时数字是一个布尔值,但如果使用-1,那么mktime[将时间元组转换为时间戳的函数]可能得到正确的值。
模块time中的一些重要函数
函数 | 描述 |
---|---|
asctime([tuple]) | 将时间元组转换为字符串 |
localtime([secs]) | 将秒数转换为表示当地时间的日期元组 |
mktime(tuple) | 将时间元组转换为当地时间(秒数) |
sleep(secs) | 休眠secs秒 |
strptime(string[, format]) | 将字符串转换为时间元组 |
time() | 当前时间(从新纪元开始后的秒数) |
time.asctime()将当前时间转换为字符串
time.asctime()
‘Mon Jul 18 14:06:07 2016’
在random模块中使用time模块中的几个函数
from random import *
from time import *
#获取表示时间段(2016年)上限和下限的实数,使用时间元组来表示日期
#将星期、儒略日和夏令时都设置为-1, 让Python去计算他们的正确值
date1 = (2016, 1, 1, 0, 0, 0, -1, -1, -1)
#调用mktime
time1 = mktime(date1)
date2 = (2017, 1, 1, 0, 0, 0, -1, -1, -1)
time2 = mktime(date2)
#以均匀的方式生成一个位于该范围内(不包含上限)的随机数
>>>random_time = uniform(time1, time2)
#秒数-->日期元组-->字符串
>>>print(asctime(localtime(random_time))
Tue Aug 16 10:11:04 2016
模块random中的一些重要函数
函数 | 描述 |
---|---|
random() | 返回一个0~1的随机实数 |
getrandbits(n) | 以长整数方式返回n个随机的二进制位 |
uniform(a, b) | 返回一个a~b(含)的随机实数 |
randrange([start], stop, [step]) | 从range(start, stop, step)中随机地选择一个数 |
choice(seq) | 从序列seq中随机地选择一个元素 |
shuffle(seq[, random]) | 就地打乱序列seq |
sample(seq, n) | 从序列seq中随机地选择n个值不同的元素 |
函数random.randrange是生成随机整数的标准函数。
- randrange(1, 11)或randrange(0, 10) + 1, 可生成一个1~10(含)的随机整数。
- randrange(1, 20, 2), 可生成一个小于20的随机正奇数。
示例1:掷骰子
from random import randrange
num = int(input('How many dice? '))#询问用户要掷多少个骰子
sides = int(input('How many sides per ide? '))#每个骰子有多少面
sum = 0
for i in range(num):
dots = randrange(sides) + 1
sum += dots
print('Die %d is %d ' % (i+1, dots))
print('The result is ', sum)
测试结果:
示例2:模拟发牌
from random import shuffle
from pprint import pprint
values = list(range(1, 11)) + 'Jack Queen King'.split()
suits = 'diamonds clubs hearts spades'.split()
deck = ['{} of {}'.format(v, s) for v in values for s in suits]
# 以上三行代码创建了一副牌, 而且为标准顺序
shuffle(deck)# 使用random模块中的shuffle()函数洗牌
#1
pprint(deck[:12])# 打印开头12张牌,pprint()函数实现逐行打印
#2
while deck:#在用户每次按回车键时都给他发一张牌,直到牌发完为止
input(deck.pop(0))
测试结果1:
测试结果2:
还没有评论,来说两句吧...