2016-09-13 4 views
0

나는 파이썬을 배우며 "클래스"에 대한 더 나은 이해와 "스택"사용을위한 과제를 가지고 있습니다.Pop 함수를 사용하지 않고 Python 스택

-Define 수치에 대한 스택을 구현하는 클래스 다음과 같이

요건이다.

-Cannot 사용 내장 값이

첫 번째 (위쪽) 가장 최근의,

α- 함수 print_stack 스택에 값을 인쇄해야합니다 수치 인 경우

α- 함수 푸시 확인해야 팝업 기능 - 스택은 거짓, 비어있는 경우, 그렇지 않으면 여기

내 작품은 지금까지입니다 True를 반환해야 IsEmpty 함수를 기능 :

class stack(): 
    def __init__(self): 
     self.items = [] 

    def push(self, item): 
     self.items.append(item) 

    def isEmpty(self): 
     return (self.items == []) #can also use return not self i think? 

    def print_stack(self): 
     print self.items 

프로그래밍에있어 매우 첫 번째 수업이므로 이해가 부족한 것이 유감입니다. 나는 나를 위해 이것을 직접 쓰는 사람을 찾고 있지 않다. 나는이 일에 어떻게 가야 하는지를 이해하고 내가해야 할 일에 대한 몇 가지 조언을 받는다.

1) 어떻게 테스트 할 수 있습니다 내가 수치를 밀어하고있는 경우 다음과 같이

내 질문

은? 처음에는 try/except를 사용할 수 있습니까?

2) 내장 기능을 사용하지 않고 팝업 기능을 만드는 가장 좋은 방법은 무엇입니까? 이것은 정말로 저에게 힘든 시간을줍니다. 내 이해에서 나는 목록에서 마지막 항목을 검색하고 그것을 반환 무언가를 작성해야합니다.

3) 내 코드를 테스트하려면 어떻게해야합니까?

test = stack() 
test.push(1) 
test.print_stack() 
test.pop() #whenever I learn how to make a pop function 
test.isEmpty 

답변

1

숫자 값을 입력했는지 어떻게 테스트 할 수 있습니까? 처음에는 try/except를 사용할 수 있습니까?

테스트 할 필요가 없습니다. 그 시점에서 작업하고있는 int 또는 어떤 데이터 유형으로 변환하십시오. 예를 들어 당신이 int

def push(self, item): 
    self.items.append(int(item)) 

작업하는 경우 당신이 갈 수있는 가장 좋은 방법은 무엇 string

def push(self, item): 
    self.items.append(str(item)) 


작업하는 경우 당신은 float

def push(self, item): 
    self.items.append(float(item)) 

작업하는 경우 usin없이 pop 함수 만들기에 대해 내장 된 것? 이것은 정말로 저에게 힘든 시간을줍니다. 내 이해에서 나는 목록에서 마지막 항목을 검색하고 그것을 반환 무언가를 작성해야합니다.

여러 가지 방법이 있습니다,

  1. 사용 del

    def pop(self): 
        n = self.items[0] 
        del self.items[0] 
        return n 
    
  2. 이 원래의 하위 집합을 반환하지만 수정하지 않을 것이라고

    def pop(self): 
        n = self.items[0] 
        self.items = self.items[1:] 
        return n 
    

    노트를 얇게 사용 그것.

  3. 사용 popleft()

    또한 목록의 길이를 확인하고 스택이 하늘인지 여부를 확인하기 위해 그것을 사용하는 len()을 사용할 수 있습니다
    def pop(self): 
        return self.items.popleft() 
    

한 가지 제안,

def isEmpty(self): 
    return (len(self.items) == 0) 

참고 : 터지기 전에 isEmpty() 함수를 사용하여 스택이 비어 있는지 확인하십시오.


내 코드를 테스트하면 어떻게 될까요?

단지 모든 기능을 실행 해보십시오. 문제가 있다고 생각되면 모든 작업 후에 스택을 인쇄하십시오. 스택에서 값이 정확히 업데이트되는 방법을 확인할 수 있습니다.

+1

답변을 보내 주시면 답변 해 드리겠습니다. – Ani

+0

웬일인지 저는 upvote 및 accept를 잊어 버렸습니다. 죄송합니다 @Ani – DudeWah

+0

나는 당신의 질문에 대답 할 수있어서 기쁩니다 :) – Ani

관련 문제