2015-06-28 75 views
-1

我正在嘗試編寫一個程序,它會嘗試找出你輸入的5個數字,就像一些AI的東西。然而,當我跑我的代碼,我發現了以下錯誤:
TypeError: 'int' object is not subscriptableTypeError:'int'object is not subcriptable AI程序測試

這裏是我的代碼—我究竟做錯了什麼?

__author__ = 'Vansh' 
import random 

def get_num_code(): 
    x1 = int(input("Enter 5 digit number code one by one:\n")) 
    x2 = int(input("")) 
    x3 = int(input("")) 
    x4 = int(input("")) 
    x5 = int(input("")) 
    x = [x1, x2, x3, x4, x5] 
    return x 

def ai0(x): 
    y = random.randrange(1, 10) 
    if x[0] == y: 
     print("digit 1 found: {}".format(str(x[0]))) 
     ai1(x) 
    else: 
     print("Digit 1 not found") 
     ai0(x) 

def ai1(x): 
    y = random.randrange(-1, 10) 
    if x[1] == y: 
     print("digit 2 found: {}".format(str(x[1]))) 
     ai2(x) 
    else: 
     print("Digit 2 not found") 
     ai1(x) 

def ai2(x): 
    y = random.randrange(-1, 10) 
    if x[2] == y: 
     print("digit 3 found: {}".format(str(x[2]))) 
     ai3(x) 
    else: 
     print("Digit 3 not found") 
     ai2(x) 

def ai3(x): 
    y = random.randrange(-1, 10) 
    if x[3] == y: 
     print("digit 4 found: {}".format(str(x[3]))) 
     ai4(x) 
    else: 
     print("Digit 4 not found") 
     ai3(x) 

def ai4(x): 
    y = random.randrange(-1, 10) 
    if x[4] == y: 
     print("digit 5 found: {}".format(str(x[4]))) 
     final(x) 
    else: 
     print("Digit 5 not found") 
     ai3(4) 

def final(x): 
    print("5 digit code FOUND: {}".format(str(x))) 

def ai(): 
    x = get_num_code() 
    ai0(x) 

ai() 
+1

仔細查看在錯誤信息 - 它會告訴你到底是誰在線的問題是。然後,您可以縮小問題範圍並進行一些調試。 – jme

回答

0

你可以有類似的功能,

import random 

x = input("Enter a number: ") 
for i in range(len(x)): 
    randomGuess = random.randrange(1,10) 
    while randomGuess != int(x[i]): 
     print('Digit',i,'not found') 
     randomGuess = random.randrange(1,10) 
    print('Digit',i,'found:',x[i]) 

輸出:

Enter a number: 123 
Digit 0 not found 
Digit 0 not found 
Digit 0 found: 1 
Digit 1 not found 
Digit 1 not found 
Digit 1 found: 2 
Digit 2 found: 3 
+0

給別人一個他們的功課問題的替代實現,沒有任何描述他們做錯了什麼或他們如何避免再次犯同樣的錯誤?這似乎是傳授魚的非常縮影,與教授技巧相比。 –

+0

@CharlesDuffy我認爲代碼是不言自明的。但我明白你的觀點。 – Sait

+0

這確實是易於閱讀且易於遵循的代碼;我不懷疑它是什麼是不言自明的。但是,如何回答OP的問題並不明顯,除了提供一個根本不會提出問題的作業答案之外。 –

0

在你的ai4函數中,你傳遞一個int作爲參數,但它期望一個列表。

ai3(4) 

應該是一個列表 - 其他函數調用它像

ai3(x)