1. 题一:Dealing with Complex Numbers. 构建一个class Complex(object),object含有实数部分和虚数部分,__sub__, __add__等替换python的built-in “-,+” operator,__str__用来编辑并返回相应格式的复数。输入:
要求输出,两个复数的加减乘除,看以下表:
这个题要求我们运用python class的概念,其中包含的__init__, __str__, self 等都是需要掌握的基础。在这个Class里,每个object 有两个属性,re(real part) 和im(imaginary part)。 当a,b被Class(a,b)时,里面的__str__将自动检测a,b,并且执行相应的return。__ini__(self, re, im) 里的self 代表创建的object,而其他__sub__,__add__等后面的self, no 两个是不同的object。思路,了解这些含义后,看一下code吧。
2. 题二: reduce() function. reduce()和lambda 连用,用来连续地将,左边的数据和右边的一个数据带入lambda 匿名函数。最后的argument代表初始值,默认是为0的。
3. 题三: Maximize it. 输入n,m,紧接着输入n个list。要求在每个list里,挑出一个element, (第一个element 表示这个list 的大小, 所以不需要每列第一个数) 把他们的平方值相加,最后算出除以m的余数。找到将结果最大化的值。
思路,这里用itertools.product(*lists), 每个list中抽出一个element与别的list中抽出的结合成一个新list,example: a=[1,2] ,b=[4,5] --> product(a,b) =[(1,4),(1,5),(2,4),(2,5)]. 有了各种组合方式后,用map(),lambda, sum 算出所有可能的值,最后输出最大值。
4. 题四:Validating the postal code. 这个题目imoprt re,re(regular expression) 是一个有效的搜索字符规律的class,真的很复杂,读它的documendation (长的一批),脑细胞挂了一半。。。总而言之, re 能让我们快速的找到一段话里的 字母,数字,特殊符号,并且可以找出一定规律的单词,数字等。运用起来大致是先定义一个re.compile(r"......") compiler, 再对想要确认的string进行需要的操作:match(),find(),findall()等等。 其中的含义。。。说来话长,不过说下几个重点。
5. 题五: Matrix Script. 把相邻两个字母或数字中间的 非字母数字 替换成空格。
example:
This$#is% Matrix# %!
替换成:
This is Matrix# %!
--> 用 re.sub(r'(?<=\w)\W+(?=\w)',' ', string) 替换. (?<=...)的作用是检查有没有'...',即使有,也不输出'...'里的内容