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模块中的几个函数

  1. from random import *
  2. from time import *
  3. #获取表示时间段(2016年)上限和下限的实数,使用时间元组来表示日期
  4. #将星期、儒略日和夏令时都设置为-1, 让Python去计算他们的正确值
  5. date1 = (2016, 1, 1, 0, 0, 0, -1, -1, -1)
  6. #调用mktime
  7. time1 = mktime(date1)
  8. date2 = (2017, 1, 1, 0, 0, 0, -1, -1, -1)
  9. time2 = mktime(date2)
  10. #以均匀的方式生成一个位于该范围内(不包含上限)的随机数
  11. >>>random_time = uniform(time1, time2)
  12. #秒数-->日期元组-->字符串
  13. >>>print(asctime(localtime(random_time))
  14. 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:掷骰子

  1. from random import randrange
  2. num = int(input('How many dice? '))#询问用户要掷多少个骰子
  3. sides = int(input('How many sides per ide? '))#每个骰子有多少面
  4. sum = 0
  5. for i in range(num):
  6. dots = randrange(sides) + 1
  7. sum += dots
  8. print('Die %d is %d ' % (i+1, dots))
  9. print('The result is ', sum)

测试结果:
在这里插入图片描述
示例2:模拟发牌

  1. from random import shuffle
  2. from pprint import pprint
  3. values = list(range(1, 11)) + 'Jack Queen King'.split()
  4. suits = 'diamonds clubs hearts spades'.split()
  5. deck = ['{} of {}'.format(v, s) for v in values for s in suits]
  6. # 以上三行代码创建了一副牌, 而且为标准顺序
  7. shuffle(deck)# 使用random模块中的shuffle()函数洗牌
  8. #1
  9. pprint(deck[:12])# 打印开头12张牌,pprint()函数实现逐行打印
  10. #2
  11. while deck:#在用户每次按回车键时都给他发一张牌,直到牌发完为止
  12. input(deck.pop(0))

测试结果1:
在这里插入图片描述
测试结果2:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,26人围观)

还没有评论,来说两句吧...

相关阅读