2013-10-10 75 views
4

我寫了下面這個腳本轉換爲它的拼寫數字。python2.7縮進錯誤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 

我GOOGLE了好幾個小時,但無法找到一個合適的解決方案。我該如何解決這個問題?

感謝您的任何幫助。

回答

10

您在混合製表符和空格。

Python 3明確地不允許這樣做。使用空格只有用於縮進。

Python Style Guide(PEP 8)報價:

空間是優選的壓痕法。

選項卡應完全用於與已使用製表符縮進的代碼保持一致。

Python 3不允許混合使用製表符和空格來縮進

強調我的。

幾乎所有的編輯器都可以配置爲在鍵入時用空格替換製表符,以及執行搜索和替換操作,將現有製表符替換爲空格。