calculator class 를 쓰는것 인데, initiating functio 을 사용 하는것 같습니다. 그런데 여기서 아무것도 return 이 안된다는 부분이 이해가 잘 안되네요. a 부터 e 까지는 리턴을 하면 안된다고 합니다. a) add_numbers 입니다. 여기서, 변수 파라미터를 리스트로 쓰는데요, 일단 제가 한것 올려 보겠습니다. ''' A calculator which will operate simple calculations such as addition, multiplication, division, subtraction, or dot product of vectors''' class Calculator(object): def__init__(self,var1,var2): ''' a new variable with variable1 (var1), and variable2(var2). All components are lists''' '''This functio will operate the basic addition of components of var1 and var2''' 이 문제는 값이 리턴 되면 안된다고 합니다. def__add_numbers__(self,var1,var2): i = 0 result = [] while i <= len(var1) or len(var2): sum= var1[i] + var2[i] result.append(sum) i+=1 return result 여기서 pass 라는걸 쓰면 되는걸까요? b) ''' This functio will operate the basic multiplication of components of var1 and var2''' 이 문제는 값이 리턴 되면 안된다고 합니다. def__multiply_numbers__(self,var1,var2): i = 0 result = [] while i <= len(var1) or len(var2): mult= var1[i] * var2[i] result.append(mult) i+=1 return result 여기서도 pass 를 써야 하는게 아닌가 싶네요. c) '''This functio will operate the basic division of components of var1,var2 and only accepts two components''' def__divide_two_numbers__(self,var1,var2): 이 문제는 값이 리턴 되면 안된다고 합니다. i = 0 result = [] while i <= len(var1) or len(var2): div= var1[i] / var2[i] result.append(div) i+=1 return result pass (?) d) '''This functio will operate the basic subtraction of components of var1,var2''' def__subtract_numbers__(self,var1,var2): 이 문제는 값이 리턴 되면 안된다고 합니다. i = 0 result = [] while i <= len(var1) or len(var2): subt= var1[i] + var2[i] result.append(subt) i+=1 return result pass(?) e) def__dot_product_of_two_vectors__(self,var1,var2): 이 문제는 값이 리턴 되면 안된다고 합니다. 대신에 벡터의 길이가 맞지 않을 경우 ‘sorry, both vectors are of unequal lengths’를 표시 해야함 '''This functio will carry out the basic dot product of vector operation of var1, var2. If the length of two variable is different, then it will show a message''' if len(var1) != len(var2): return "Sorry, both vectors are of unequal lengths" else: i = 0 result = [] while i <= len(var1): dot= var1[i] * var2[i] result.append(dot) i+=1 return sum.result 여기서 result 라는 리스트를 새로 만들었으나 계산 하는것은 벡터니까, 나중에 sum 이라는 내장된 함수를 쓰는게 좋지 않을까 해서 해 봤습니다. pass f) ''' This functio will return the last value of calculation''' 이거는 위 calculation 중 마지막으로 실행 되었던 결과를 불러오는 것 입니다. calculator = Calculator() def get_result_of_last_calculation(self,var1,var2): print result 이렇게 하면 되는건가요? 이건 도저희 이해가 잘 안가네요... g) '''This functio will return the last value of the functio add_numbers''' 위 a 에서 했던 마지막 addition 을 return 하는것 입니다. def get_result_of_last_addition(self,var1,var2): return self.add_numbers(result) h) '''This functio will return the last value of the functio multiply_numbers''' 위 b 에서 했던 마지막 multiplication 을 return 하는 것입니다. def get_result_of_last_multiplication(self,var1,var2): return self.multiply_numbers(result) i) '''This functio will return the last value of the functio divide_two_numbers''' 위 c에서 했던 마지막 division 을 return 하는 것입니다. def get_result_of_last_division(self,var1,var2): return self.divide_two_numbers(result) j) '''This functio will return the last value of the functio dot_product_of_two_vectors''' 위 e 에서 했던 마지막 dot product of vector 을 return 하는 것입니다. def get_result_of_last_vector_product(self,var1,var2): return self.dot_product_of_two_vectors(result) 그 다음 문제는, Q. 바이너리 검색과 리니어 검색을 수학적 표현을 이용해서 나타내어라 이건 도저희 모르겠네요..ㅠ_ㅠ 예를들어, 벡터가 있습니다. [1,0,0,0,0,0,3,0,0,0,] 이렇게 하면 파이선 메모리를 너무 잡아 먹는다더고 하더군요. 그래서 dictionary 를 사용해서 표현을 한다고 합니다. {0:1,6:3} 요는, 제가 dictionary를 사용하는 연산 방법을 잘 모른다는게 문제라면 문제일까요? ㅠ_ㅠ Q. 벡터(dictionary) + 벡터(dictionary) 를 하는것입니다. '''This functio adds the vectors in the form of dictionary and returns a new dictionary which is the sum of the two vectors''' def sparse_add(v1,v2): new_vec = {} i1 =0 i2 = 0 while i1 != len(v1) and i2 != len(v2): if v1[i1] <= v2[i2]: new_vec.append(v1[i1]) i1 += 1 else: new_vec.append(v2[i2]) i2 +=2 return new_vec 이렇게 해 보았습니다. 위의 리스트 소팅 하는것을 응용 해야 하는것 같긴 합니다만..ㅠ_ㅠ 여기까지가 제가 생각 할 수 있는 한계이네요.. Q. '''This functio returns the dot product of vectors in the form of dictionary and returns a new dictionary.''' dot product 를 하는 거네요. 그래서 그 전에 했던거랑 좀 합쳐서, def sparse_dot(v1,v2): new_vec = {} i1 =0 i2 = 0 while i1 != len(v1) : v3= v1[i1] * v2[i2] new_vec.append(v3) i1 += 1 and i2+=1 return sum.new_vec 이렇게 하면 되는건가요? Q.dictionary 의 고유 value 를 가지는 key 의 총 갯수를 써라. {'red':1, 'green':1, 'blue':2} 면 2의 값을 return 해야된다고 합니다. 그래서 제가 생각 해 낸것은, def unique_values(d): seen = {} # dict (value, key) result = set() # keys with unique values for k,v in d.iteritems(): if v in seen: result.discard(seen[v]) else: seen[v] = k result.add(k) return len(result) 이런것도 있고, 자료 좀 찾아보니, def unique(a): from collections import defaultdict count = defaultdict(lambda: 0) for k, v in a.iteritems(): count[v] += 1 for v, c in count.iteritems(): if c <= 1: yield v 이런것도 있더군요... 저는 여기서 람다 가 어떻게 사용되는지 전혀 이해를 못하고 있어요..ㅠ_ㅠ 그래서 람다를 쓰는 방법이 좋은거 같긴 하지만, 혹시 설명 해주실 수 있으신가요??