2016-10-10 2 views
-1

명명 된 튜플이 이름이있는 튜플 목록에 있는지 확인해야합니다 (명명 된 튜플은 'Polygon'의 점 A (2,3) 수업). 주어진 튜플이리스트에 존재하지 않으면 튜플을리스트에 추가합니다. 존재하는 경우 사용자 정의 예외가 발생합니다. 이 함수는 주어진 점이 목록에 없을 때 작동합니다. 그러나 포인트가 존재하고 단순히리스트의 끝에 추가되면 예외는 발생하지 않습니다. 클래스 ExistingPointError (예외) : 데프 초기화 (자기, 값) : 그리고 여기 내가 지금까지 가지고 무엇 self.value이 방법에 대해 = 0명명 된 튜플 목록에서 명명 된 튜플을 찾으려면

class Polygon(object): 
    counter = 0 
    def __init__(self): 
     Polygon.counter+=1 
     self.points = [] 


# and here's the function that I'm working with 

    def setter(self,pt): 
     def isThere(pt): 
       if pt in self.points: raise ExistingPointError() 

      print("Setting Point") 
     try: 
      isThere(pt) 
      self.points.append(pt) 
     except ExistingPointError as E: 
      print("Point exists! value: ", E) 
     print(self.points) 


P = Polygon() 
point=collections.namedtuple('PointName','Name x y') 
A = point(Name = 'A', x = 5, y = 0) 
B = point(Name = 'B',x = 10,y = 5) 
C = point(Name = 'C',x=5,y=10) 
D = point(Name = 'D', x=-2,y=8) 
lst = [A,B,C,D] 
P.createPolygon(lst) 
P.setter(D) 
+0

'pt'가 어떻게 보이는지, 즉 이름이 지정된 튜플을 어떻게 정의했는지 게시해야합니다. – khachik

+0

StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)가 여기에 적용됩니다. 특히, 문제를 재현하는 코드를 게시하지 않았습니다. – Prune

+1

이고'isThere'의 for 루프는 의미가 없습니다. – khachik

답변

0

?

def setter(self,pt): 
    def isThere(pt): 
     if pt in self.points: 
      raise ExistingPointError() 
     print("Setting Point") 
    try: 
     isThere(pt) 
     self.points.append(pt) 
    except ExistingPointError as E: 
     print("Point exists! value: ", E) 
    print(self.points) 

예외가 여기에 오는 방법이라고 확신하지는 않습니다. 당신은 사용자 정의 오류, ExistingPointError()를 제기 할

def setter(self,pt): 
    if pt in self.points: 
     print("Point exists!") 
    else: 
     self.points.append(pt) 
    print(self.points) 
+0

나는 전에 이것을 시도했다. 같은 대답을 준다. ( – Shruthi

+0

for 루프는 의미가 없으며 예외는 필요 없다. 당신은 포인트가 같은가? (명명 된 튜플은 일반 tuple) –

+0

그래, for 루프없이 해봤는데 같은 대답을 얻는다. 모든 점의 이름은 튜플이다. L 이것은 실험실 과제이므로 예외를 사용해야한다고 나와있다. – Shruthi

0

, 아직 당신은 정말이 무엇인지 정의하지 않은 : 어쩌면이 시도. 당신은 @Gjhuizing 언급했듯이 이것에 대한 예외를 발생하지 않아도

Traceback (most recent call last): 
File "python", line 27, in <module> 
File "python", line 20, in setter 
NameError: name 'ExistingPointError' is not defined 

: 내가 코드를 실행하고 다각형 객체로 중복 튜플을 삽입 할 때, 나는 다음과 같은 오류가 발생합니다. 객체가 이미 존재 함을 사용자에게 알리는 간단한 메시지는 사용자의 경우에 충분해야합니다.

관련 문제