Ошибка отступа в python 3.3, когда python2.7 работает хорошо

Я написал этот скрипт ниже, который конвертирует число в его орфографию.

no = raw_input("Enter a number: ")

strcheck = str(no)
try:
     val = int(no)
except ValueError:
     print("sayi degil")
     raise SystemExit
lencheck = str(no)
if len(lencheck) > 6:
     print("Bu sayi cok buyuk !")
     raise SystemExit

n = int(no)
print(n)
def int2word(n):

     n3 = []
     r1 = ""

     ns = str(n)
     for k in range(3, 33, 3):
              r = ns[-k:]
              q = len(ns) - k

    if q < -2:
        break
    else:
        if  q >= 0:
            n3.append(int(r[:3]))
        elif q >= -1:
            n3.append(int(r[:2]))
        elif q >= -2:
            n3.append(int(r[:1]))
    r1 = r

#print(n3)  


     nw = ""
     for i, x in enumerate(n3):
              b1 = x % 10
              b2 = (x % 100)//10
              b3 = (x % 1000)//100

          if x == 0:
                  continue  
              else:
                  t = binler[i]

              if b2 == 0:
                  nw = birler[b1] + t + nw
              elif b2 == 1:
                  nw = onlar[1] + birler[b1] + t + nw
              elif b2 > 1:
                  nw = onlar[b2] + birler[b1] + t + nw
              if b3 > 0:
                  nw = birler[b3] + "yuz " + nw
     return nw

 birler = ["", " ","iki ","uc ","dort ", "bes ", "alti ","yedi ","sekiz ","dokuz "]
 onlar = ["", "on ", "yirmi ", "otuz ", "kirk ", "elli ", "altmis ", "yetmis ", "seksen ", "doksan "]
 binler = ["", "bin"]

 print int2word(n)

Этот скрипт работает очень хорошо на Python2.7.

Но когда я пытаюсь запустить его с python3.3

Это дает мне ошибку ниже:

File "numtospell.py", line 58
    if x == 0:
             ^
TabError: inconsistent use of tabs and spaces in indentation

Я гуглил это часами, но не могу найти подходящего решения. Что мне сделать, чтобы это исправить?

Спасибо за любую помощь.

1 ответ

Решение

Вы смешиваете табуляции и пробелы.

Python 3 явно запрещает это. Используйте пробелы только для отступа.

Цитирование из Руководства по стилю Python (PEP 8):

Пробелы являются предпочтительным методом отступа.

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

Python 3 запрещает смешивать использование табуляции и пробелов для отступа.

Акцент мой.

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

Другие вопросы по тегам