一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 413|回复: 3
收起左侧

[CS61A]Disc05

[复制链接] |试试Instant~ |关注本帖
sky420 发表于 2015-6-1 14:31:30 | 显示全部楼层 |阅读模式

[其他]CS61A #3 - 04@UCBerkely

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
Disc05 link: http://gaotx.com/cs61a/disc/disc05.pdf
My solution: http://gaotx.com/blogs/2015/05/21/cs61a-disc05/
wuxiaomin98 发表于 2015-6-4 04:29:28 | 显示全部楼层
# This is for cs61a discussion 5

def square_elements(lst):
        """
        2.1.1
        Squares every element in lst.
        >>> lst = [1, 2, 3]
        >>> square_elements(lst)
        >>> lst
        [1, 4, 9]
        """
        for i in range(len(lst)):
                lst[i] = lst[i] ** 2

def reverse_list(lst):
        """
        2.1.2
        Reverses lst in-place (mutating the original list).
        >>> lst = [1, 2, 3, 4]
        >>> reverse_list(lst)
        >>> lst
        [4, 3, 2, 1]
        >>> pi = [3, 1, 4, 1, 5]
        >>> reverse_list(pi)
        >>> pi
        [5, 1, 4, 1, 3]
        """
        for i in range(len(lst) // 2):
                lst[i], lst[len(lst)-i-1] = lst[len(lst)-i-1], lst[i]

def add_this_many(x, y, lst):
        """
        2.2.1
        Adds y to the end of lst the number of times x occurs.
        >>> lst = [1, 2, 4, 2, 1]
        >>> add_this_many(1, 5, lst)
        >>> lst
        [1, 2, 4, 2, 1, 5, 5]
        """
        count = 0
        for ele in lst:
                if ele == x:
                        count += 1
        while count > 0:
                lst.append(y)
                count -= 1

def remove_all(el, lst):
        """
        2.2.2
        Removes all instances of el from lst.
        >>> x = [3, 1, 2, 1, 5, 1, 1, 7]
        >>> remove_all(1, x)
        >>> x
        [3, 2, 5, 7]
        """
        while el in lst:
                lst.remove(el)

def replace_all(d, x, y):
        """
        3.3.1
        >>> d = {’foo’: 2, ’bar’: 3, ’garply’: 3, ’xyzzy’: 99}
        >>> replace_all(d, 3, ’poof’)
        >>> d
        {’foo’: 2, ’bar’: ’poof’, ’garply’: ’poof’, ’xyzzy’: 99}
    """
        for key in d:
                if d[key] == x:
                        d[key] = y

def replace_all_deep(d, x, y):
    """
    3.4.1
    >>> d = {1: {2: 3, 3: 4}, 2: {4: 4, 5: 3}}
    >>> replace_all_deep(d, 3, 1)
    >>> d
    {1: {2: 1, 3: 4}, 2: {4: 4, 5: 1}}
    """
    for key in d:
            if d[key] == x:
                    d[key] = y
            elif type(d[key]) == dict:
                    replace_all_deep(d[key], x, y)

def remove_all(d, x):
    """
    3.4.2
    >>> d = {1:2, 2:3, 3:2, 4:3}
    >>> remove_all(d, 2)
    >>> d
    {2: 3, 4: 3}
    """
    for key in d:
            if d[key] == x:
                    del d[key]

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

reasonapp 发表于 2015-6-23 01:09:15 | 显示全部楼层
并没有做extra,一天做一个lab+hw+disc快要做瘫了。。。代码如下。。
#disc05
#Q2.1_1
def square_elements(lst):
    """Squares every element in lst.
    >>> lst = [1, 2, 3]
    >>> square_elements(lst)
    >>> lst
    [1, 4, 9]
    """
    for i in range(len(lst)):
        lst[i] = lst[i] ** 2
        
#Q2.1_2
def reverse_list(lst):
    """Reverses lst in-place (mutating the original list).
    >>> lst = [1, 2, 3, 4]
    >>> reverse_list(lst)
    >>> lst
    [4, 3, 2, 1]
    >>> pi = [3, 1, 4, 1, 5]
    >>> reverse_list(pi)
    >>> pi
    [5, 1, 4, 1, 3]
    """
    for i in range(len(lst) // 2):
                lst[i], lst[len(lst)-i-1] = lst[len(lst)-i-1], lst[i]
               
#Q3.3_1
def replace_all(d, x, y):
        """
        3.3.1
        >>> d = {’foo’: 2, ’bar’: 3, ’garply’: 3, ’xyzzy’: 99}
        >>> replace_all(d, 3, ’poof’)
        >>> d
        {’foo’: 2, ’bar’: ’poof’, ’garply’: ’poof’, ’xyzzy’: 99}
    """
        for key in d:
                if d[key] == x:
                        d[key] = y
回复 支持 反对

使用道具 举报

Liaeve 发表于 2016-4-26 19:58:02 | 显示全部楼层
#Q2.1.1
def square_elements(lst):
    for i in range(len(lst)):
        lst[i] = lst[i] ** 2
    return lst

#Q2.1.2
def reverse_list(lst):
    for i in range(len(lst)//2):
        lst[i], lst[len(lst)-i-1] = lst[len(lst)-i-1], lst[i]
    return lst

#Extra
#Q2.2.1
def add_this_many(x, y, lst):
        for el in lst:
                if el == x:
                        lst.append(y)
        return lst
l=[1,2,3,1,4,3,6,3]
print(add_this_many(3, 5, l))

#Q2.2.2
def remove_all(el, lst):
    while el in lst:
        lst.remove(el)
    return lst

#Q3.3.1
def replace_all(d, x, y):
    for key in d:
        if d[key] == x:
            d[key] = y
    return lst

#Q3.4.1
def replace_all_deep(d, x, y):
    for key in d:
        if type(d[key]) == dict:
            replace_all_deep(d[key], x, y)
        elif d[key] == x:
            d[key] = y
        return d

#Q3.4.2
def remove_all(d, x):
    keys = []
    for key in d:
        if d[key] == x:
            keys += [key]
    for k in keys:
        del d[k]
    return d
d = {1:2, 2:3, 3:2, 4:3}
remove_all(d, 2)
print(d)
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 22:39

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表