ValueError:[' A']不在列表中

时间:2016-12-04 19:38:52

标签: python list python-3.x

我正在尝试开发一个简单的游戏作为我学习的大学的作业,但我在部分代码中遇到了一些麻烦。这是:

p1 = jogador[tn][pn][0]  # This is equals to 'A', because both "tn" and "pn" are variables that, in this case, are equals '0'.
p1 = list(p1)
ip1 = colunas.index(p1)

这给了我以下错误:

Traceback (most recent call last):
File "G:/Fatec/1º Semestre/Alg+BD/PycharmProjects/AlgoritmosNaVeia/EP/BatalhaNaval.py", line 77, in <module>
ip1 = colunas.index(p1)
ValueError: ['A'] is not in list

嗯......我很确定&#39; A&#39;在列表中,所以...我该如何解决这个问题?

如果你想要完整的代码,那么它(它还没有完成):

J1 = open('jogador1.txt', 'r')
J2 = open('jogador2.txt', 'r')

# Lendo as jogadas dos jogadores
jogador1 = []
jogador2 = []
count = 0
while count < 6:
    variavel = J1.readline()
    variavel = list(variavel)
    del variavel[1], variavel[0]
    if '\n' in variavel:
        variavel.remove('\n')
    variavel = ''.join(variavel)
    variavel = variavel.split('|')
    jogador1.append(variavel)

    variavel = J2.readline()
    variavel = list(variavel)
    del variavel[1], variavel[0]
    if '\n' in variavel:
        variavel.remove('\n')
    variavel = ''.join(variavel)
    variavel = variavel.split('|')
    jogador2.append(variavel)

    count += 1
del jogador1[4], jogador2[4]
linhas = 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'L', 'M', 'N', 'O', 'P'
colunas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
naviospermitidos = 2, 2, 5, 4

x1 = 0  # Quantidade de navios definidos pelo usuário
x2 = 0  # Quantidade de navios permitidos (2x1, 2x2, 5x3, 4x4)
count = 0  # Contador

while count < 4:  # Verificar o tabuleiro dos jogadores.
    if len(jogador1[x1]) != naviospermitidos[x2]:
        print("ERROR_VALIDATION teste jogador1")
    if len(jogador2[x1]) != naviospermitidos[x2]:
        print("ERROR_VALIDATION teste jogador2")
    count += 1

# Validar quantidade de tiros de torpedos
if len(jogador1[4]) != 20:
    print("ERROR_VALIDATION teste jogador1")
if len(jogador2[4]) != 20:
    print("ERROR_VALIDATION teste jogador2")
print(jogador1)  # REMOVER DEPOIS
print(jogador2)  # REMOVER DEPOIS

jogador = jogador1
posicoes = []
x3 = 0
tn = 0  # Tipo do navio
pn = 0  # Posição do navio
count = 0

for tn in range(0, 3):  # Começando a colocar as peças no tabuleiro.
    if tn == 0:
        x3 = 3
    elif tn == 1:
        x3 = 4
    elif tn == 2:
        x3 = 0
    elif tn == 3:
        x3 = 1

    p1 = jogador[tn][pn][0]
    p1 = list(p1)
    ip1 = colunas.index(p1)

    for pn in range(0, x3):
        if len(jogador[tn][pn]) == 3:  # Se a linha for menor que 10
            p2 = jogador[tn][pn][1]
            ip2 = linhas.index(int(p2))

            if jogador[tn][pn][-1] == 'H':
                for count in range(0, x3):
                    posicoes.append(colunas[ip1] + p2)
                    ip1 += 1
            print(posicoes)

            if jogador[tn][pn][-1] == 'V':
                for count in range(0, x3):
                    posicoes.append(p1 + str(linhas[ip2]))
                    ip2 += 1
            print(posicoes)
        break

2 个答案:

答案 0 :(得分:2)

['A']不在列表中,但'A'是。

正确的代码是:

p1 = jogador[tn][pn][0]  # This is equals to 'A', because both "tn" and "pn" are variables that, in this case, are equals '0'.
ip1 = colunas.index(p1)

答案 1 :(得分:1)

在您的代码中,colunas是1到15之间的整数列表。linhas是一个包含从A到P的字母的元组。

执行colunas.index('A')时,Python会抛出一条错误,指出colunas中找不到“A”,因为它不是。但是,它在linhas中。你的意思是linhas.index('A')吗?