2015-09-24 3 views
0

Есть ли способ свести на нет функцию, чтобы она возвращала негативы. В моей функции у меня есть условные обозначения, и каждый из них делает эту «черепаху». Есть ли способ отрицать это, поэтому каждый ход черепахи отрицательный. Я говорю о состоянии «=».Отменить функцию в python

def ttInterpret(program): 
      """ 
      interpret program as a TinyTurtle language string. 
      program -- a TinyTurtle string, possibly with string manipulation symbols 
      """ 
      stor_pos = turtle.pos() 
      spec_index = 0 
      for ch in program: 
       if ch >= '0' and ch <= '9': 
        turtle.fd(int(ch) * 10) 
       elif ch == '<': 
        turtle.left(15) 
       elif ch == 'L': 
        turtle.left(90) 
       elif ch == '>': 
        turtle.right(15) 
       elif ch == 'R': 
        turtle.right(90) 
       elif ch == ' ': 
        pass 

       elif ch == '@': 
        # ttInterpret(program[:program.index(ch):-1]) 
        stor_pos = turtle.pos() #keeps track of when @ was used 
        spec_index = program.index(ch) #returns the index of the most recent specified character 

       elif ch == '/': 
        fds_index = program.index(ch) #returns last '/' index 
        ttInterpret(program[spec_index:fds_index - 1]) 
        # while ch != '/': 
         # ttInterpret(-program[ch::-1]) 
       elif ch == '!': 
        turtle.setpos(stor_pos) 

       elif ch == '=': 
        ttInterpret(program[:int(program.index(ch)):-1]) #returns to start 
        ttInterpret(program[:int(program.index(ch)):1]) #mirrors from start 

       else: 
        print("Error: ", ch," is not supported by TinyTurtle") 
      return 
+0

Пожалуйста, [исправьте * кодовый блок *] (http://meta.exetchange.com/q/22186). – wwii

+0

Я пытаюсь отрицать функцию ttinterpret в case = case, и это рекурсивный вызов. (его предназначено для зеркалирования изображения, кстати) – matttm

+0

Вы можете использовать словари для сопоставления символов методам черепахи - один для * вперед * и один для * реверса *, а затем переключение словарей, когда это необходимо. – wwii

ответ

0

Поместите весь код в цикл while, как показано ниже.

while True: 

Затем, вместо того, чтобы вызвать такую ​​же функцию рекурсивно, используйте:

program = program[:int(program.index(ch)):-1] 
continue #returns to start 

И похоже

0

я в конечном итоге просто дублируют функции и отрицая все, что в нем. Спасибо, ребята

Смежные вопросы