Python 编程训练(3)

  • iter()函数

    python中迭代对象的生成。
    示例:(条件求和)

    bonuses=[4, 2, 4, 5],n=3
    输出:
    calcBonuses(bonuses, n) = 10
    
    bonuses=[4, 2, 4, 5],n=5
    输出:
    calcBonuses(bonuses, n) = 0
    
    Code:
    
    def calcBonuses(bonuses, n):
        it = iter(bonuses)
        res = 0
        try:
            for _ in range(n):
            res += next(it)
        except StopIteration:
            res = 0
        return res

  • yield生成器

    生成费波纳齐数列[0 1 1 2 3 5 …]
    Coding:

    def fibonacciGenerator(n):
    def fib():
        last = (0, 1)
        while True:
            yield last[0]
            last = last[0] + last[1], last[0]
    
    gen = fib()
    return [next(gen) for _ in range(n)]

    参考1


  • raise 函数的使用

    示例:

    输入:team = ["Athos", "Porthos", "Aramis"]
    函数的输出为:
    greetingsGenerator(team) = ["Hello, Athos!",
                            "Hello, Porthos!",
                            "Hello, Aramis!"]

    Codes:

    class Greeter(object):
    def __init__(self, names):
        self.cnt = 0
        self.names = names
    
    def __iter__(self):
        return self
    
    def next(self):
        if self.cnt < len(self.names):
            self.cnt += 1
            return 'Hello, {}!'.format(self.names[self.cnt - 1])
        else:
            raise StopIteration
    
    
    def greetingsGenerator(team):
        return list(Greeter(team))
  • raise触发异常

    一个列表中每第n个数判断一下是否能被d整除,若能整除,返回这个数在列表中基于1开始的下标:
    示例:

    Input: 
        purchases = [12, 43, 13, 465, 1, 13], n = 2 and d = 3
    Output:
        superPrize(purchases, n, d) = [4]

    示例代码:

    class Prizes(object):
    def __init__(self, purchases, n, d):
        self.purchases = purchases
        self.n = n
        self.d = d
        self.index = n - 1
    def __iter__(self):
        'Returns itself as an iterator object'
        return self
    
    def next(self):
        while self.index < len(self.purchases):
            temp = self.index
            self.index += self.n
            if self.purchases[self.index - self.n] % self.d == 0: 
                return temp+1
        else:
            raise StopIteration
    
    
    def superPrize(purchases, n, d):
        return list(Prizes(purchases, n, d))

    参考2.


  • eval函数

    给一个函数列表和一个值,返回用此值执行函数列表中的函数后结果的列表。
    示例:

    Input:
        x = 1
        functions = ["math.sin", "math.cos", "lambda x: x * 2", "lambda x: x ** 2"]
    Output:
        tryFunctions(x, functions) = [0.84147, 0.5403, 2, 1]

    代码:

    def tryFunctions(x, functions):
        return map(lambda f:eval(f)(x),functions)

    eval() 函数用来执行一个字符串表达式,并返回表达式的值,主要是eval函数的使用3.


PEP Style
- Refer:

1 http://www.jb51.net/article/71298.htm

2 http://www.runoob.com/python/python-exceptions.html

3 http://www.runoob.com/python/python-func-eval.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值