“ TypeError:列表索引必须是整数或切片,而不是str”

时间:2019-04-30 17:21:04

标签: python

我是编码新手。我学习了python的基础知识,现在开始了我的第一个项目。我正在尝试编写Tic Tac Toe的代码。我进行了bacic设计,现在正在研究真正的代码。我正在尝试通过坐标系来实现这一点。我正在向用户询问他想去的位置。我将此信息放入列表中。然后,我使用此信息来更改表示井字游戏中x或o的数字之一,但是当它应更改数字时,它给我一个错误:“ TypeError:列表索引必须是整数或切片,而不是str” < / p>

game = [["a b c"],
   [0, 0, 0],
   [0, 0, 0],
   [0, 0, 0],]

a = 0
b = 1
c = 2

def show_display():

    global count

    count = 0
    for row in (game):
        print (count, row)
        count += 1

    print (" ")

show_display()

x = input("Spieler 1,bitte geben sie ihren nächsten Zuge ein."
          "Achten sie auf eine korrekte Schreibweise! Beispiel:[a1]     Ihre Eingabe:")

print(x[1])
game[(x[2])][(x[1])] = 1 <-here is the problem

show_display()

这是输出:(我想可以)

0 ['a b c']
1 [0, 0, 0]
2 [0, 0, 0]
3 [0, 0, 0]

Spieler 1,bitte geben sie ihren nächsten Zuge ein.Achten sie auf eine korrekte Schreibweise! Beispiel:[a1] Ihre Eingabe: [a1]
a

(显示不正确)

1 个答案:

答案 0 :(得分:0)

此问题已解决。


game = [["a b c"],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
       ]

def show_display():

    global count

    count = 0
    for row in (game):
        print (count, row)
        count += 1

    print (" ")

def main():

    a = 0
    b = 1
    c = 2
    show_display()

    x = input("Spieler 1,bitte geben sie ihren nächsten Zuge ein."
              "Achten sie auf eine korrekte Schreibweise! Beispiel:[a1]     Ihre Eingabe:")

    if(x[0] == "a"):
        game[int(x[1])][0] = 1
    elif(x[0] == "b"):
        game[int(x[1])][1] = 1
    elif(x[0] == "c"):
        game[int(x[1])][2] = 1

    show_display()

if __name__ == '__main__':
    main()