Pessoal, meu exercício de Python é modificar o zero de lugar, permutando-o com algum elemento, acima, abaixo ou dos lados, dada determinada matriz. Dado, por exemplo, a matriz inicial:
[1 1 1
2 3 0
3 3 3 ], transformá-la em uma [1 1 0
2 3 1
3 3 3].
Para fazer isso, já criei os comando c, b, d, e(Respectivamente cima, baixo, direita, esquerda) com a finalidade de efetuar a troca nas diferentes posições, no entanto, só o c e e funcionam. Qual o erro do meu código?
Obs.: - A listamov contém os movimentos que o usuário digita no computador, pois a ideia é fazer uma sequência de movimentos. A listamov pode ser, por exemplo:[c,c,d,d]
- n é o número de linhas, que é igual ao número de colunas da lista
- lin e col são meros contadores para o for ir verificando a matriz por completo
- tabIn é a matriz inicial, que vai ser alterada
- Já foram retirados os casos em que a troca é impossível****
for c in listamov:
if c == 'c':
for lin in range(n):
for col in range(n):
if tabIn[lin][col] == 0:
tabIn[lin][col] = tabIn[lin-1][col]
tabIn[lin-1][col]=0
if c == 'b':
for lin in range(n):
for col in range(n):
if tabIn[lin][col] == 0:
tabIn[lin][col] = tabIn[lin + 1][col]
tabIn[lin + 1][col] = 0
if c == 'e':
for lin in range(n):
for col in range(n):
if tabIn[lin][col] == 0:
tabIn[lin][col] = tabIn[lin][col-1]
tabIn[lin][col-1]=0
if c == 'd':
for lin in range(n):
for col in range(n):
if tabIn[lin][col] == 0:
tabIn[lin][col]=tabIn[lin][col+1]
tabIn[lin][col+1]=0
O erro que dá é do tipo:
Traceback (most recent call last):
File "C:/Users/987BCD/PycharmProjects/JKIV/PR3.py", line 100, in <module>
tabIn[lin][col] = tabIn[lin + 1][col]
IndexError: list index out of range
Pergunta
vssdb
Pessoal, meu exercício de Python é modificar o zero de lugar, permutando-o com algum elemento, acima, abaixo ou dos lados, dada determinada matriz. Dado, por exemplo, a matriz inicial:
[1 1 1
2 3 0
3 3 3 ], transformá-la em uma [1 1 0
2 3 1
3 3 3].
Para fazer isso, já criei os comando c, b, d, e(Respectivamente cima, baixo, direita, esquerda) com a finalidade de efetuar a troca nas diferentes posições, no entanto, só o c e e funcionam. Qual o erro do meu código?
Obs.: - A listamov contém os movimentos que o usuário digita no computador, pois a ideia é fazer uma sequência de movimentos. A listamov pode ser, por exemplo:[c,c,d,d]
- n é o número de linhas, que é igual ao número de colunas da lista
- lin e col são meros contadores para o for ir verificando a matriz por completo
- tabIn é a matriz inicial, que vai ser alterada
- Já foram retirados os casos em que a troca é impossível****
O erro que dá é do tipo:
Traceback (most recent call last):
File "C:/Users/987BCD/PycharmProjects/JKIV/PR3.py", line 100, in <module>
tabIn[lin][col] = tabIn[lin + 1][col]
IndexError: list index out of range
Process finished with exit code 1
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.