2015-07-07 3 views
-2
def pingpong(n): 
    invisible_number = 0 
    return_value = 0 
    G = -1 
    while invisible_number != n: 
     if invisible_number > 10 and invisible_number < 100: 
      invisible_number_ones_digit = invisible_number % 10 
      invisible_number_tens_digit = invisible_number // 10 
      return invisible_number_ones_digit and invisible_number_tens_digit 
     if invisible_number > 100 and invisible_number < 1000: 
      invisible_number_ones_digit = (invisible_number % 10) % 10 
      invisible_number_tens_digit = (invisible_number % 10) // 10 
      invisible_number_hundreds_digit = (invisible_number // 10) // 10 
      return invisible_number_ones_digit and invisible_number_tens_digit and invisible_number_hundreds_digit 
     if invisible_number % 7 == 0: 
      return_value = return_value - G 
      G = -1 * G 

     elif invisible_number_ones_digit == 7 or invisible_number_tens_digit == 7 or invisible_number_hundreds_digit == 7: 
      return_value = return_value - G 
      G = -1 * G 
     else: 
      return_value += G 
     invisible_number += 1 
    return return_value 

Это вопрос номер 3 here. Я только пытаюсь добраться до 1000, чтобы содержать цифру 7, потому что я не могу найти шаблон, который мог бы использовать.Unbound Local Ошибка в функции

+0

Не могли бы вы проверить, что ваш код вставить здесь верно? Похоже, все после первой строки должно быть отступом одна вкладка. – kevinsa5

+0

Пожалуйста, отредактируйте свой вопрос и добавьте полную информацию о трассировке; теперь мы должны угадать, где происходит ошибка. – Evert

+0

Если первые три условия не выполнены, вы попадаете в часть 'elif', которая использует еще неназначенные переменные:' invisible_number_ones_digit', 'invisible_number_tens_digit' и' invisible_number_hundreds_digit'. – Evert

ответ

0

Я предполагаю, что ваш UnboundLocalError является «локальной переменной» invisible_number_ones_digit, на которую ссылаются перед назначением ». Вы можете установить

invisible_number = 0 

так, если вы звоните pingpong(n) где п ничего, кроме 0, ваш код будет терпеть неудачу, когда вы ссылаетесь на значение invisible_number_ones_digit, что вы сейчас делаете в elif. То же самое с любыми другими переменными, которые вы используете, прежде чем присвоить им значение.

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