How to think like a Computer Scientist: 课后习题第十一章 5-11

来源:互联网 发布:数控机床圆弧编程实例 编辑:程序博客网 时间:2024/04/29 08:35
#-------------------------------------------------------------------------------# Name:        module1# Purpose:## Author:      penglaixy## Created:     11/08/2013# Copyright:   (c) penglaixy 2013# Licence:     <your licence>#-------------------------------------------------------------------------------import sysimport randomimport stringdef test(did_pass):    '''''    print the result of a test    '''    linenum = sys._getframe(1).f_lineno    if did_pass:        msg = 'Test at line {0} ok'.format(linenum)    else:        msg = 'Test at line {0} failed'.format(linenum)    print msgdef add_vectors(u, v):    new_list=[]    if len(u) != len(v):        print "Parameter error!"    for i in range(len(u)):        new_list.append(u[i]+v[i])    return new_listdef scalar_mult(s, v):    new_list = []    for item in v:        new_list.append(s*item)    return new_listdef dot_product(u, v):    total = 0    if len(u) != len(v):        print "Parameter error!"    for i in range(len(u)):        total += u[i]*v[i]    return totaldef cross_product(u, v):    '''    a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k    '''    new_list = []    if len(u) != 3 or len(v) != 3:        print "Parameter error!"    new_list.append(u[1]*v[2] - u[2]*v[1])    new_list.append(u[2]*v[0] - u[0]*v[2])    new_list.append(u[0]*v[1] - u[1]*v[0])    return new_listdef replace_str(str, old, new):    while True:        index = str.find(old)        if -1 != index:            str = str[:index] + new + str[(index + len(old)):]        else:            break    return strdef replace(s, old, new):    list_str = s.split()    new_list = []    for str in list_str:        new_list.append(replace_str(str,old, new))    return " ".join(new_list)    passdef swap(x,y):    print("before swap statement: x:", x, "y:", y)    (x,y) = (y,x)    x[1] = "hello"    y[1] = "world"    print("after swap statement: x:", x, "y:", y)def test_suite():    '''''    Run the suite of tests for code in this module    '''    test(add_vectors([1,1], [1,1]) == [2,2])    test(add_vectors([1,2], [1,4]) == [2,6])    test(add_vectors([1,2,1], [1,4,3]) == [2,6,4])    test(scalar_mult(5, [1,2]) == [5, 10])    test(scalar_mult(3, [1,0,-1]) == [3, 0, -3])    test(scalar_mult(7, [3, 0, 5, 11, 2]) == [21, 0, 35, 77, 14])    test(dot_product([1,1],[1,1]) == 2)    test(dot_product([1, 2],[1,4]) == 9)    test(dot_product([1,2,1],[1,4,3]) == 12)    test(cross_product([1,2,3],[4,5,6]) == [-3, 6, -3])    test(cross_product([2,3,4],[2,3,4]) == [0,0,0])    test(replace("Mississippi",'i','II') == 'MIIssIIssIIppII')    s = "I love spom! Spom is my favorite food. Spom, spom, yum!"    test(replace(s,'om','am') == "I love spam! Spam is my favorite food. Spam, spam, yum!")    test(replace(s,'o', 'a') ==  "I lave spam! Spam is my favarite faad. Spam, spam, yum!")    passdef main():    test_suite()    a = ["This", "is", "fun"]    b = [2,3,4]    print("before swap statement: a:", a, "b:", b)    swap(a,b)    print("after swap statement: a:", a, "b:", b)if __name__ == '__main__':    main()

原创粉丝点击