Ir para conteúdo
Fórum Script Brasil
  • 0

Exercício de Python - Matriz


vssdb

Pergunta

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

Process finished with exit code 1

 

                                          

Editado por vssdb
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...