返回顶部
首页 > 资讯 > 后端开发 > Python >python3--模块collections,time,random,sys
  • 652
分享到

python3--模块collections,time,random,sys

模块collectionssys 2023-01-30 21:01:53 652人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

defaultdict(默认字典)有如下值集合[11,22,33,44,55,66,77,88,99,90......],将所有大于66的值保存至字典的第一个key中,小于66的值保存至第二个key的值中即:{'k1':大于

defaultdict(默认字典)

有如下值集合[11,22,33,44,55,66,77,88,99,90......],将所有大于66的值保存至字典的第一个key中,小于66的值保存至第二个key的值中

即:{'k1':大于66,'k2':小于66}

values = [11,22,33,44,55,66,77,88,99,90]
dic = {}
for i in values:
    if i > 66:
        if dic.get('k1'):
            dic['k1'].append(i)
        else:
            dic['k1'] = [i]
    elif i < 66:
        if dic.get('k2'):
            dic['k2'].append(i)
        else:
            dic['k2'] = [i]
print(dic)

执行结果

{'k2': [11, 22, 33, 44, 55], 'k1': [77, 88, 99, 90]}


使用defaultdict解题

from collections import defaultdict
values = [11,22,33,44,55,66,77,88,99,90]
dic = defaultdict(list)
for i in values:
    if i > 66:
        dic['k1'].append(i)
    elif i < 66:
        dic['k2'].append(i)
print(dic)

执行结果

defaultdict(


使用dict时,如果引用的key不存在,就会抛出keyerror,如果希望key不存在时,返回一个默认值,就可以用defaultdict

from collections import defaultdict
dd = defaultdict(lambda: 'N/A')
dd['key1'] = 'abc'
print(dd['key1'])
print(dd['key2'])  # k2不存在,返回默认值

执行结果

abc

N/A


counter

counter类的目的是用来跟踪值出现的次数,它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value.计数值可以使任意的interger(包括0和负数)

from collections import Counter
c = Counter('abcdeabcdabcadacbaa')
print(c)

执行结果

Counter({'a': 7, 'c': 4, 'b': 4, 'd': 3, 'e': 1})



time时间模块

和时间有关系的我们就要用到时间模块,在使用模块之前,应该首先导入这个模块

常用方法

1 time.sleep(secs)

(线程)推迟指定的时间运行,单位为秒

2 time.time()

获取当前时间戳


表示时间的三种方式

python中,通常有三种方式来表示时间:时间戳,元组(struct_time),格式化的时间字符串

1 时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型


2 格式化的时间字符串(FORMat String): '1999-12-06'

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身


3 元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

blob.png


导入time模块,来认识一下Python中表示时间的几种格式

import time

# 时间戳
print(time.time())

# 格式化时间
print(time.strftime("%Y-%m-%d"))  # 字符串格式化时间
print(time.strftime("%Y-%m-%d %H-%M-%S"))  # 字符串格式化时间
print(time.strftime('%x %X'))  # 字符串格式化时间
print(time.strftime('%c'))  # 字符串格式化时间

# 结构化时间
print(time.localtime())  # 本地结构化时间
print(time.gmtime())  # 英国的结构化时间

执行结果

1524567428.2425647

2018-04-24

2018-04-24 18-57-08

04/24/18 18:57:08

Tue Apr 24 18:57:08 2018

time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=18, tm_min=57, tm_sec=8, tm_wday=1, tm_yday=114, tm_isdst=0)

time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=10, tm_min=57, tm_sec=8, tm_wday=1, tm_yday=114, tm_isdst=0)


时间戳转换

blob.png

import time
p = time.strptime('2015-8-8', '%Y-%m-%d')
print(time.mktime(p))  # 格式化时间转换时间戳

ret = time.localtime(1500000000)
print(time.strftime('%Y-%m-%d %H:%M:%S', ret))  # 时间戳转格式化时间

# 结构化时间转格式化时间
# time.strftime
print(time.strftime("%Y-%m-%d", time.localtime(1500000000)))  # 年-月-日
print(time.strftime("%Y-%m-%d, %H:%M:%S", time.localtime(1500000000)))  # 年-月-日 时:分:秒

# 格式化时间-->结构化时间
# time.strptime(时间字符串,字符串对应格式)
print(time.strptime("2018-04-24", "%Y-%m-%d"))
print(time.strptime("04/24/2018", "%m/%d/%Y"))

执行结果

1438963200.0

2017-07-14 10:40:00

2017-07-14

2017-07-14, 10:40:00

time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=114, tm_isdst=-1)

time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=114, tm_isdst=-1)



blob.png

结构化时间----->%a %b %d %H:%M:%S(格式化时间)

time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串

import time
print(time.asctime(time.localtime(1500000000)))  # 指定时间
print(time.asctime())  # 当前时间

执行结果

Fri Jul 14 10:40:00 2017

Tue Apr 24 19:42:41 2018


时间戳-----> %a %b % d %H:%M:%S(格式化时间)

time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串

import time
print(time.ctime())  # 当前时间
print(time.ctime(1500000000))  # 指定时间

执行结果

Tue Apr 24 19:46:51 2018

Fri Jul 14 10:40:00 2017


练习:

计算从当前时间开始,比起Y-m-d H:M:S 过去了多少年,多少月,多少天,多少小时,多少分钟,多少秒?

import time
true_time=time.mktime(time.strptime('2018-04-23 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2018-04-24 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                       struct_time.tm_mday-1,struct_time.tm_hour,
                                       struct_time.tm_min,struct_time.tm_sec))

执行结果

过去了0年0月1天2小时30分钟0秒


random模块

import random
print(random.random())  # 大于0且小于1之间的小数
print(random.uniform(1, 3))  # 大于1小于3的小数
print(random.randrange(1, 5))  # 大于等于1且小于等于5之间的数
print(random.randrange(1, 10, 2))  # 大于等于1且小于10之间的奇数

# 随机整数
print(random.randint(1, 5))  # 大于等于1且小于等于5之间的整数

# 随机选择一个返回
print(random.choice([1, '23', [4, 5]]))  # 1或者'23'或者[4,5]

# 随机选择多个返回,返回的个数为函数的第二个参数
print(random.sample([1, '23', [4, 5]], 2))  # 列表元素任意两个组合

# 打乱列表顺序
item = [1, 3, 5, 7, 9]
random.shuffle(item)  # 打乱次序
print(item)

执行结果

0.024784575662495034

2.3860472857875683

3

3

2

23

[[4, 5], '23']

[5, 3, 7, 1, 9]


练习:

要求,生成随机验证码

基础需求: 6位数的验证码,数字可以重复

import random
new_list = []
for i in range(6):
    new_list.append(str(random.randrange(1, 9)))
ss = ''.join(new_list)
print(ss)

执行结果

174635


方法2

import random
# 函数传参的方式
def id_code(num):
    ret = ''
    for i in range(num):
        n = str(random.randint(0, 9))
        ret += n
    return ret
print(id_code(6))

执行结果

334858


进阶需求: 字母+数字 4位验证码,数字字母都可以重复

import random
new_list = []
for i in range(1, 10):  # 数字1到9
    new_list.append(str(i))
for i in range(65,91):  # 大写字母
    new_list.append(chr(i))
new_list = random.sample(new_list, 4)
ss = ''.join(new_list)
print("生成的随机验证为:{}".format(ss))
while True:
    content = input('输入验证码:').strip().upper()
    if content == ss:
        print('验证成功')
        break
    else:
        print('验证失败')

执行结果

生成的随机验证为:QSCY

输入验证码:qscy

验证成功


方法2:

import random
def id_code(num):
    ret = ''
    for i in range(num):
        number = str(random.randint(0, 9))  # 数字 0 - 9
        alph_num1 = random.randint(97, 122)  # 数字 97 - 122 (ascii对应a - z)
        alph_num2 = random.randint(65, 90)   # 数字 65 - 90  (ascii对应A - Z)
        alph1 = chr(alph_num1)  # 利用chr把对应的数字转成小写字母
        alph2 = chr(alph_num2)  # 利用chr把对应的数字转成大写字母
        choice = random.choice([number, alph1, alph2])
        ret += choice
    return ret

def content():
    id_code_num = id_code(6)
    print('随机验证为:{}'.format(id_code_num))
    while True:
        ss = input("输入验证码:").strip().upper()
        if ss == id_code_num.upper():
            print('验证成功')
            break
        else:
            print('验证失败')
content()

执行结果

随机验证为:7GfM01

输入验证码:tgfm01

验证失败

输入验证码:7gfm01

验证成功


sys模块

sys模块是与python解释器交互的一个接口

sys.argv           命令行参数List,第一个元素是程序本身路径

sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)

sys.version        获取Python解释程序的版本信息

sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.platform       返回操作系统平台名称


退出程序

import sys
print('*'*10)
sys.exit()  # 退出程序,后面的不会被执行
print('*'*10)

执行结果

**********


import sys
print(sys.version)  # 打印python版本
print(sys.platform)  # 打印系统版本(win or Mac or linux)
print(sys.path)  # 打印路径

执行结果

blob.png


sys.argv

创建一个新的py文件,命名为sys_argv.py

里面内容如下

import sys

print(sys.argv)


在cmd里面执行,进入当前文件目录,如图

blob.png


执行: python sys.argv.py 命令

返回当前文件名路径

blob.png


执行: python D:/python11_quanzhan/day27/sys_argv.py 命令

返回当前文件名绝对路径

blob.png


执行: python D:/python11_quanzhan/day27/sys_argv.py sam 123456 命令

返回当前文件名绝对路径加输入的参数

blob.png


编写sys.argv.py文件

import sys
print(sys.argv)

user = input('输入账号').strip()
pwd = input('输入密码').strip()

if sys.argv[1] == 'sam' and sys.argv[2] == '123456':
    print('登陆成功')
else:
    sys.exit()
print('我能完成的功能')

在cmd里面执行 python sys_argv.py sam 123456 命令

blob.png


sys.argv + logging 示例

import sys
import logging

lev = sys.argv[1] if len(sys.argv) > 1 else 'WARNING'
logging.basicConfig(level=getattr(logging, lev))
num = int(input('>>>').strip())
logging.debug(num)
a = num * 100
logging.debug('{}*100={}'.format(num, a))
b = a - 10
logging.debug('{}-10={}'.format(a, b))
c = b + 5
logging.debug('{}+5={}'.format(b, c))
print(c)

在cmd里面执行 python sys_argv.py 命令

blob.png


在cmd里面执行 python sys_argv.py DEBUG 命令

blob.png

DEBUG打印出每个步骤,方便排错,也方便记录



--结束END--

本文标题: python3--模块collections,time,random,sys

本文链接: https://lsjlt.com/news/179069.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python3--模块collections,time,random,sys
    defaultdict(默认字典)有如下值集合[11,22,33,44,55,66,77,88,99,90......],将所有大于66的值保存至字典的第一个key中,小于66的值保存至第二个key的值中即:{'k1':大于...
    99+
    2023-01-30
    模块 collections sys
  • python3-sys模块
    # Auther: Aaron Fanimport sysprint(sys.path)     #打印环境变量print(sys.argv)     #打印脚本名和脚本所带的所有参数print(sys.argv[2])  #打印脚本所跟的...
    99+
    2023-01-31
    模块 sys
  • Python3 中 random模块
    Python中的random模块用于生成随机数。 下面具体介绍random模块的功能: #用于生成一个0到1的 随机浮点数:0<= n < 1.0 import random a = random.random() pri...
    99+
    2023-01-31
    模块 random
  • python3--模块configparser,logging,collections
    configparser模块该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)创建文件import configparserconfig = configpar...
    99+
    2023-01-30
    模块 configparser collections
  • Python中的sys模块、random模块和math模块
    一、sys运行时环境模块 sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。 用法: sys.argv:命令行参数List,第...
    99+
    2024-04-02
  • python3 时间模块 random模
    话不多说,一个是算时间的,还有一个是生成验证码的  1 #!usr/bin/env/ python 2 # -*- coding:utf-8 -*- 3 # Author: XiaoFeng 4 import time 5 s...
    99+
    2023-01-31
    模块 时间 random
  • 常用模块random,time,os,s
      取随机数的模块 #导入random模块 import random #取随机小数: r = random.random() #取大于零且小于一之间的小数 print(r) #0.7028485217376959 r...
    99+
    2023-01-30
    模块 常用 random
  • python3 time模块与datet
    在Python中,通常有这几种方式来表示时间:1)时间戳2)格式化的时间字符串 3)元组(struct_time)共九个元素由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。 UTC(Coordinated Uni...
    99+
    2023-01-31
    模块 time datet
  • python3 time模块解释
    time() 模块继承自 Object 类,datetime() 模块继承自 Object 下面的 Date() 模块。 time 提供的功能更加接近于操作系统层面,其所能表述的日期范围被限定在 1970 - 2038 之间,如...
    99+
    2023-01-31
    模块 time
  • python的random和time模块详解
    目录一、模块概述二、模块内容三、模块导入的原理四、模块导入的方法五、random模块六、time模块(1)python表示时间的三种格式(2)常用方法:(3)时间元组、时间戳、格式化...
    99+
    2024-04-02
  • Python3 Random模块代码详解
    描述 random() 方法返回随机生成的一个实数,它在[0,1)范围内。 import random help(random) FUNCTIONS betavariate(alpha, beta...
    99+
    2022-06-04
    详解 模块 代码
  • python3的time模块和datet
    time模块 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。 UTC(Coordin...
    99+
    2023-01-31
    模块 time datet
  • collections模块
      collections模块在内置数据类型(dict、list、set、tuple)的基础上,还提供了几个额外的数据类型:ChainMap、Counter、deque、defaultdict、namedtuple和OrderedDict...
    99+
    2023-01-30
    模块 collections
  • 3 - collections 模块
    collections 数据类型主要是为了弥补 list /tuple / dict 的额外数据类型 ChainMap 代码: import collections ## 赋值,合并字典的作用 a = {'a':"A"} b = {"b...
    99+
    2023-01-31
    模块 collections
  • python模块之collections
    计数器 Counter 计数元素迭代器 elements() 计数对象拷贝 copy() 计数对象清空 clear() from collections import Counter #import collection...
    99+
    2023-01-30
    模块 python collections
  • 集合模块collections
    collections是Python内建的一个集合模块,提供了许多有用的集合类。 namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到...
    99+
    2023-01-31
    模块 collections
  • python random模块
    random() 方法返回随机生成的一个实数,它在[0,1)范围内。random()生成一个0到1的随机符点数import random print(random.random())执行输出0.7950347424262036ra...
    99+
    2023-01-30
    模块 python random
  • python模块--random
    random模块                                                                                                                ...
    99+
    2023-01-31
    模块 python random
  • python-sys模块
    sys模块最常用的就只有两个,sys.argv和sys.exit,sys.argv返回一个列表,包含了所有的命令行参数,sys.exit则是退出程序。再就是可以返回当前系统平台编写testSys.py,代码如下#!/usr/bin/env&...
    99+
    2023-01-30
    模块 python sys
  • python sys模块
    sys模块提供了一系列有关Python运行环境的变量和函数。常见用法sys.argv可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。变量解释sys.argv[0]当前程序名sys.argv[1]第一个参数sys.a...
    99+
    2023-01-30
    模块 python sys
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作