其他分享
首页 > 其他分享> > 2020 cs61a lab06

2020 cs61a lab06

作者:互联网

网址 https://inst.eecs.berkeley.edu/~cs61a/fa20/lab/lab06/#topics
problem124:

    this_file = __file__


    def make_adder_inc(a):
        """
        >>> adder1 = make_adder_inc(5)
        >>> adder2 = make_adder_inc(6)
        >>> adder1(2)
        7
        >>> adder1(2) # 5 + 2 + 1
        8
        >>> adder1(10) # 5 + 10 + 2
        17
        >>> [adder1(x) for x in [1, 2, 3]]
        [9, 11, 13]
        >>> adder2(5)
        11
        """
        "*** YOUR CODE HERE ***"
        c = -1
        def fun(b):
            nonlocal c
            c += 1
            return a + b + c
        return fun


    def make_fib():
        """Returns a function that returns the next Fibonacci number
        every time it is called.

        >>> fib = make_fib()
        >>> fib()
        0
        >>> fib()
        1
        >>> fib()
        1
        >>> fib()
        2
        >>> fib()
        3
        >>> fib2 = make_fib()
        >>> fib() + sum([fib2() for _ in range(5)])
        12
        >>> from construct_check import check
        >>> # Do not use lists in your implementation
        >>> check(this_file, 'make_fib', ['List'])
        True
        """
        "*** YOUR CODE HERE ***"
        a = 1
        b = 1
        c = 1
        n = 1
        def fun():
            nonlocal a 
            nonlocal b
            nonlocal c
            nonlocal n
            if n == 1:
                n += 1
                return 0
            if n == 2:
                n += 1
                return 1
            if n == 3:
                n += 1
                return 1
            a = b
            b = c
            c = a + b
            return c
        return fun


    def insert_items(lst, entry, elem):
        """
        >>> test_lst = [1, 5, 8, 5, 2, 3]
        >>> new_lst = insert_items(test_lst, 5, 7)
        >>> new_lst
        [1, 5, 7, 8, 5, 7, 2, 3]
        >>> large_lst = [1, 4, 8]
        >>> large_lst2 = insert_items(large_lst, 4, 4)
        >>> large_lst2
        [1, 4, 4, 8]
        >>> large_lst3 = insert_items(large_lst2, 4, 6)
        >>> large_lst3
        [1, 4, 6, 4, 6, 8]
        >>> large_lst3 is large_lst
        True
        """
        "*** YOUR CODE HERE ***"
        num = 0
        flag = 0
        for i in lst:
            if entry == elem:
                if flag == 1:
                    flag = 0
                    continue
            if i == entry:
                lst.insert(num + 1, elem)
                flag = 1
            num += 1
        return lst

problem3:

标签:large,return,make,nonlocal,cs61a,fib,lst,2020,lab06
来源: https://www.cnblogs.com/echoT/p/16078504.html