Jump to content
Fórum Script Brasil
  • 0

Exercício de Python - Matriz


Question

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

 

                                          

Edited by vssdb
Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148691
    • Total Posts
      644530
×
×
  • Create New...