2015-12-04 3 views
0

У меня возникли проблемы с отладкой, у меня есть функция, которая подбирает несколько переменных из предыдущих функций, слишком много, чтобы быть размещенными здесь, я думаю, но все они работают по назначению и передаются через автоматические тесты mooshak проекта, однако на этом конкретном блоке одной функции я не могу заставить его вернуть false.Python - не возвращает false

Он печатает ('a'), если аргументы, которые я даю ему на «отладчике», соответствуют заданным условиям, но он не возвращается. Любая идеация того, что может быть причиной этого?

Редактировать: Это моя целая функция.

def ask_play(t): 
     # Creates a string to be used on the input msg that follows the projet rulles, (coordenada_linha(etc...)) are the used to calculate the maximum dimensions of the board. 

     dim = str('(') + str((coordenada_linha(tabuleiro_dimensoes(t)))) + str(' : ') + str((coordenada_coluna(tabuleiro_dimensoes(t)))) + str(')') 

     # Creates the input message. 
     msg = 'Introduza uma jogada\n - coordenada entre (1 : 1) e ' + str(dim) +' >> ' 

     # xy picks the inputed (x : y) from the input and turns into (x ,y) so we can compare them to the maximum and minimum accepted coordenates. 
     xy = eval((input(msg)).replace(' : ' , ', ')) 

     # Valor is just the number the coordenate should recieve. 
     valor = int(input(' - valor >> ')) 

     # maxdim is the "highest coordenate on the board" in this case it's (5, 5)  
     maxdim = (((coordenada_linha(tabuleiro_dimensoes(t)))), ((coordenada_coluna(tabuleiro_dimensoes(t))))) 

     # checks if the first input is a coordenate that is "inside" the grid, if it isn't, SHOULD return false, else it returns coordenate + given value 
     if not ((((xy) >= (1, 1)) and ((xy) <= (maxdim)))): 
      return False 
     else: 
      return cria_jogada(cria_coordenada(coordenada_linha(xy), coordenada_coluna(xy)), valor) 

С наилучшими пожеланиями

+0

дубликат http://stackoverflow.com/questions/10902203/how-do-you-see-the-return-value-from-a-function-in-the-python-debugger-without – kwarunek

+0

Что это такое делать вместо того, чтобы возвращаться? – darch

+0

Вместо того, чтобы возвращать его, он просто печатает A, если условия в порядке, он возвращает то, что должно возвращать кортеж координат, за которым следует значение в этой позиции. Но когда условия не в порядке, для чего я использую это условие, он просто печатает (a), и я бы хотел, чтобы он сказал False, но не использовал печать. –

ответ

0

проверить текстовый редактор для смешанных вкладок и пространства? Это coding horror blog post описывает проблему, о которой я беспокоюсь.

Моя догадка строки читается как

if not ((((xy) >= (1, 1)) and ((xy) <= maxdim))): 
....print('a') 
> > return False 

или аналогичный. Python подсчитывает вкладки и пробелы - ваш уровень отступов - чтобы выяснить, в каком коде идет условный или цикл или функция. Если вы смешиваете вкладки и пробелы, Python может запутаться в том, какой код принадлежит какому блоку. Я подозреваю, что заявление о возвращении страдает от этой проблемы.

В Notepad ++, например, вы можете выбрать пункт меню

View->Show Symbol->Show White Space and Tab 

, чтобы сделать его отображать символы табуляции и пробелы. Если в некоторых строках используются вкладки и некоторые пробелы, измените их на одно и то же: конвертируйте вкладки в пробелы.

+0

Я не знаю, как это сделать? Когда я смотрю на свой WingIDE, notePAD ++ или Notepad, он не показывает никаких wierd-вкладок, таких как те, которые вы дали в примере, если это то, что вы подразумеваете под текстовым редактором. С наилучшими пожеланиями –

+0

Все выглядит нормально на этом фронте. Я сделал то, что вам было поручено, но все выглядит так, как будто я не активировал «show white space and tab». Я имею в виду, что я могу видеть небольшие розовые точки, но отсюда видно, что все нормально. Я обновил свой основной пост с помощью всей функции, однако, держу пари, очень странно читать эту стену текста. Спасибо за вашу помощь. –