2016-05-13 8 views
1

So bekomme ich diesen Fehler, wenn ich versuche, meinen Code zu verwenden.Ich kann nicht herausfinden, warum ich das bekomme: TypeError: 'builtin_function_or_method'-Objekt ist nicht einklagbar

File "/Users/max/Desktop/Code/Python/game.py", line 30, in <module> 
     lineone.remove[0]  #or whatever number I use 
    TypeError: 'builtin_function_or_method' object is not subscriptable 

Mein Code ist

lineone = ['0', '0', '0', '0', '0', '0', '0'] 
linetwo = ['0', '0', '0', '0', '0'] 
linethree = ['0', '0', '0'] 
lineoneX = ['X', 'X', 'X', 'X', 'X', 'X', 'X'] 
linetwoX = ['X', 'X', 'X', 'X', 'X'] 
linethreeX = ['X', 'X', 'X'] 
notfirst = 0 
player1 = input('''Enter player 1's name ''') 
player2 = input('''Enter player 2's name ''') 
print('The person who takes the last stone wins!') 
print(lineone[0], lineone[1], lineone[2], lineone[3], lineone[4], lineone[5], lineone[6]) 
print(linetwo[0], linetwo[1], linetwo[2], linetwo[3], linetwo[4]) 
print(linethree[0], linethree[1], linethree[2]) 

while True: 
    #WTD means -What to Delete 
    WTD = input('Type the row number, then the amount of stones you want to take, in the format 1, 1. ') 
      # Line One 
    if WTD == '1, 1': 
      lineone.remove[0] 
    if WTD == '1, 2': 
      lineone.remove[1] 
    if WTD == '1, 3': 
      lineone.remove[2] 
    if WTD == '1, 4': 
      lineone.remove[3] 
    if WTD == '1, 5': 
      lineone.remove[4] 
    if WTD == '1, 6': 
      lineone.remove[5] 
    if WTD == '1, 7': 
      lineone.remove[6] 
      # Line Two 
    if WTD == '2, 1': 
      linetwo.remove[0] 
    if WTD == '2, 2': 
      linetwo.remove[1] 
    if WTD == '2, 3': 
      linetwo.remove[2] 
    if WTD == '2, 4': 
      linetwo.remove[3] 
    if WTD == '2, 5': 
      linetwo.remove[4] 
      # Line Three 
    if WTD == '3, 1': 
      linetwo.remove[0] 
    if WTD == '3, 2': 
      linetwo.remove[1] 
    if WTD == '2, 3': 
      linetwo.remove[2] 
    print(lineone) 
    print(linetwo) 
    print(linethree) 

Ich habe in vielen anderen Orten gesucht, aber ich kann nicht herausfinden, warum dies nicht funktioniert. Ich verwende eckige Klammern, ich benutze 0 und nicht 1 für den ersten Gegenstand. Also bitte helfen, Vielen Dank im Voraus!

+0

'remove' ist eine Methode; Sie nennen es in Klammern, nicht in Klammern. Es tut auch nicht, was Sie versuchen zu tun, also werden Sie immer noch Probleme haben, nachdem Sie die Klammern geändert haben. – user2357112

+0

Was meinen Sie mit: Es macht auch nicht das, was Sie versuchen zu tun – Maximus

+0

Sie versuchen, eine bestimmte Anzahl von Elementen aus der Liste zu entfernen. 'remove' macht das nicht. – user2357112

Antwort

2

Das Problem ist, dass Sie versuchen, entfernen wie eine Liste oder ein Wörterbuch zu verwenden, während es eine Funktion ist und deshalb erhalten Sie TypeError: 'builtin_function_or_method' object is not subscriptable. Stattdessen sollten Sie lineone.remove('0') versuchen, wenn Sie das erste Element "0" entfernen möchten, oder z. lineone.pop(0) wenn Sie das erste Element entfernen möchten. Überprüfen Sie die docs für Details.

Verwandte Themen