函数&异常判定__Python


#1 创建一个函数,用于接收用户输入的数字,并计算用户输入数字的和
from functools import reduce

a_list = []
def add(x, y):
    return x+y

try:
    while True:
        a = input('请输入数字:')
        if a == '':
            break
        else:
            a_list.append(int(a))
            print(reduce(add, a_list))        
except Exception as e:
    print('注意:请输入数字 %s' %e)

#2 创建一个函数,传入Ñ个整数,返回其中最大的数和最小的数
b_list = []

def compare(*args):
    print('最大值:%s 最小值:%s' %(max(*args), min(*args)))

try:
    while True:
        b = input('请输入整数:')
        if b == '':
            break
        else:
            b_list.append(int(b))
    compare(b_list)
except Exception:
    print('注意:请输入数字')



#3 创建一个函数,传入一个参数N,返回ñ的阶乘
def factorial(x):
            
        if x == 1 or x == 0:
            return 1
        else:
            return x*factorial(x-1)
        
try:
    while True:
        c = input('请输入数字:')
        if c == '':
            break
        else:
            print(factorial(int(c)))
except Exception as e:
    print('注意:请输入数字 %s' %e)


摘廖雪峰

# 通过配置,logging还可以把错误记录到日志文件里,方便事后排查。
import logging

def foo(s):
    return 10/int(s)

def bar(s):
    return foo(s) * 2

def main():
    try:
        bar('0')
    except Exception as e:
        logging.exception(e)
        
main()
print('END')


----logging
把print()替换为logging是第3种方式,和assert比,logging不会抛出错误,而且可以输出到文件:

import logging

s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)
logging.info()就可以输出一段文本。运行,发现除了ZeroDivisionError,没有任何信息。怎么回事?

别急,在import logging之后添加一行配置再试试:

import logging
logging.basicConfig(level=logging.INFO)
看到输出了:

$ python err.py
INFO:root:n = 0
Traceback (most recent call last):
  File "err.py", line 8, in <module>
    print(10 / n)
ZeroDivisionError: division by zero
这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debug和info就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。

logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值