黑马程序员技术交流社区

标题: 【深圳校区】python 异常 日志 和 推导式 [打印本页]

作者: 柠檬leung不酸    时间: 2019-1-20 08:00
标题: 【深圳校区】python 异常 日志 和 推导式
#usr/bin/python
#-*-coding:utf-8-*
                                                        # 自定义异常  与 日志
import logging

log_format = "%(asctime)s - %(filename)s - %(message)s"
date_format = "%m %d %Y %H:%M: %S %p"
logging.basicConfig(level=logging.DEBUG,filename="my.log",format=log_format,datefmt=date_format)


class MyException(Exception):
    pass
try:
    sex = input("Please enter your gender:")
    if sex != "male" and sex != "female":
        raise MyException("only male or female !")
except MyException as e:
    # print(e)
    logging.debug("第19行有错误:{}".format(e))
except Exception as e:
    print(e)
finally:
    print("Over!")


import logging

log_format = "%(asctime)s - %(filename)s - %(message)s"
# log_format = "{}-{}-{}".format(asctime,filename,message)
date_format = "%m %d %Y %H:%M: %S %p"
logging.basicConfig(level=logging.DEBUG,filename="my.log",format=log_format,datefmt=date_format)


logging.debug("this is a debug log !")
logging.info("this is a info log !")
logging.warning("this is a warning log !")
logging.error("this is a error log !")
logging.critical("this is a critical log !")




#                                                                        random模块重要函数
# 1 )、random() 返回0<=n<1之间的随机实数n;
# 2 )、choice(seq) 从序列seq中返回随机的元素;
# 3 )、getrandbits(n) 以长整型形式返回n个随机位;
# 4 )、shuffle(seq[, random]) 原地指定seq序列;
# 5 )、sample(seq, n) 从序列seq中选择n个随机且独立的元素;
# 三、random模块方法说明
# random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。
# random.uniform()正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。
# random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,python random.randint。
# random.choice()可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。
# random.shuffle()如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。
# random.sample()可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。



# python的各种推导式(列表推导式、字典推导式、集合推导式)

# 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
# 共有三种推导,在Python2和3中都有支持:
                                        # 列表(list)推导式
                                        # 字典(dict)推导式
                                        # 集合(set)推导式

# 一、列表推导式
# 1、使用[]生成list

# 例一:
multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

# 例二:
def squared(x):
    return x * x


multiples = [squared(i) for i in range(30) if i % 3 is 0]
print(multiples)
#  Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]

# 2、使用()生成generator将俩表推导式的[]改成()即可得到生成器。
multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))
#  Output: <type 'generator'>


# 二、字典推导式

# 字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:
# 例子一:大小写key合并

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
    k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
    for k in mcase.keys()
    if k.lower() in ['a', 'b']}
print(mcase_frequency)
#  Output: {'a': 17, 'b': 34}

# 例子二:快速更换key和value

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print(mcase_frequency)
#  Output: {10: 'a', 34: 'b'}


# 三、集合推导式
# 它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

# 例一:
squared = {x ** 2 for x in [1, 1, 2]}
print(squared)
# Output: set([1, 4])

---------------------
作者:witouch
来源:CSDN
原文:https://blog.csdn.net/weixin_41886498/article/details/80443589



作者: 柠檬leung不酸    时间: 2019-10-21 09:25





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2