2013-05-21 4 views
0

그래서 처음에는 목록을 만든 다음 사용자에게 물체 (거북이)를 만들 것인지 물어 보는 코드가 있습니다. 목록, 또는 그가 거북이 (X)를 움직이고 싶다면. 사용자가 개체를 만들지 않은 경우 '개체를 만들 필요가 있습니다.'를 인쇄하고 싶습니다. 그러나 인쇄하는 것 같지 않습니다. 나는 코드가 자체적으로 출력하기 때문에 이것이 왜 함수 내에서 작동하지 않는지 궁금하다. 그래서 기본적으로 난 그냥 코드가 "인쇄 나는 빈리스트가있는 경우 '객체를 생성해야 할빈 목록이있는 경우 문자열을 인쇄하지 않습니다.

adventurousch = [] 

def RoamingTurtles(): 
    command = raw_input("---> ") 
    if command == 'A': 
    newAdventureTurtle() 
    RoamingTurtles() 
    if command == 'X': 
    if adventurousch == []: 
     print "Need to create object" 
    else: 
     for i in adventurousch: 
     i.drawSquare() 
     print "test2 
+0

상태 : if not adventurousch : ... print "생성 된 객체가 필요함" – levi

답변

3

이 트릭을 수행해야합니다. 또한

... 
if not adventurousch: 
     print "Need to create object" 
... 

참조 : Best way to check if a list is empty

+0

효과가있었습니다. 이제 내 문제는 인쇄를 중단 한 후 RoamingTurtles()를 입력하여 기능에 대한 피드백을 시도 할 때입니다. – Danrex

2

을 코드 adventurousch == []adventurousch이 비어있는 것이 아니라 특정 빈 목록과 동일한 지 테스트합니다. adventurousch이 비어 있는지 확인하려면 if not adventurousch:을 사용하십시오.

+0

그래도 작동하지만, 인쇄 후에 RoamingTurtles()를 추가하여 함수에 피드백을 넣으려고 할 때 함수를 통해 간다. – Danrex

+1

나머지 코드를 보지 않고도 말하기는 어렵지만,'RoamingTurtles() '를 재귀 적으로 호출하면 달성하려는 목표를 달성 할 수 있다면 놀랄 것입니다. 대안으로,'RoamingTurtles()'에서 루프를 사용하여 사용자가 원하는만큼 거북을 만들 수 있도록하는 것이 좋습니다. 또한'adventurousch'와 같은 전역 변수를 사용하여 'newAdventureTurtle()'이 아마도 거북이를 추가하게되면 프로그램을 이해하기 어렵게 만듭니다. 함수에서 새로운 거북이를 반환하여 'adventurousch.append (newAdventureTurtle())'와 같은 것을 말할 수 있습니다. – Simon

관련 문제