«Unindent не соответствует ни одному внешнему уровню отступа» Но я не могу найти пробел или таберрор - PullRequest
0 голосов
/ 11 апреля 2019

Я получаю сообщение об ошибке «У отступа нет соответствия ни одному внешнему уровню отступа».Тем не менее, когда я решаю проблему, я всегда отвечаю, что табуляции и пробелы использовались взаимозаменяемо или что-то в этом роде, но я не могу найти, что может быть не так в моем случае.Я переписал это, удостоверился, что все было вкладками, затем переписал это снова, на этот раз все с пробелами.Я продолжаю получать ошибку.Любая помощь?

Примечание: ошибка отображается в строке "if n == 2:"


def is_prime_v3(n):
     '''return 'True' if 'n' is a prime number. False otherwise.'''
     if n == 1:
         return False

    #if the number is even and larger than 2, it is not a prime number.
    if n == 2:
        return True
    if n>2 and n%2==0:
        return False    

    max_divisor = math.floor(math.sqrt(n))
    for d in range(3, 1+max_divisor,2):
        if n%d == 0:
            return False
    return True

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Ваш if n==1, как и строка документации, имеет на один пробел больше, чем if n==2 и остальной код.

Устанавливает их как отступ «нулевого уровня» внутри функции, а следующий код «отступает» к нулю.

0 голосов
/ 11 апреля 2019

Проблема была обнаружена между '' 'return ... snippet' '' и if n == 1:.Был неизвестный персонаж, который что-то сделал ....

Попробуйте сейчас:

import math

def is_prime_v3(n):
  X  '''return 'True' if 'n' is a prime number. False otherwise.'''
                         # whitespace too many at X.
  Y  if n == 1:          # whitespace too many at Y.
  Z      return False     # whitespace too many at Z.
    # if the number is even and larger than 2, it is not a prime number.
    if n == 2:
        return True
    if n>2 and n%2==0:
        return False    

    max_divisor = math.floor(math.sqrt(n))

    for d in range(3, 1+max_divisor, 2):
        if n%d == 0:
            return False
    return True

print ('luck or lol : %s' % is_prime_v3(3))

РЕДАКТИРОВАТЬ: если быть более точным, это выглядит так:

SyntaxError: неожиданный EOF при синтаксическом анализе с «EOF».

или

'''return 'True' if 'n' is a prime number. False otherwise.'''

IndentationError: unindent не соответствует ни одному внешнему уровню отступа

из которых последняя, ​​которую вы, возможно, уже сейчас пережили

...