I would like if someone can identify my error in this code in python:

Asked

Viewed 83 times

-3

def main ():

    d=[(1, 'Introdução a Sistemas de Informação'), (1, 'Programação I'), (1, 'Introdução ao Computador'), (1, 'Introdução ao Cálculo'), (1, 'Lógica'), (1, 'Comunicação e Expressão'), (2, 'Programação II'), (2, 'Teoria Geral da Administração'), (2, 'Cálculo I'), (2, 'Matemática Discreta'), (2, 'Sociologia'), (3, 'Teoria Geral de Sistemas'), (3, 'Estruturas de Dados'), (3, 'Arquitetura e Organização de Computadores'), (3, 'Álgebra Linear'), (3, 'Probabilidade e Estatística I'), (3, 'Metodologia de Pesquisa'), (0, 'Cálculo II'), (0, 'Desenvolvimento Orientado a Objeto')]
    for i in d: 
        if i[0]!=0:
            print (i[0], "Período:")
            x=i[0]
            for j in d:
                if j[0]==x:
                    print ("- ", j[1])
        else:
            print("Optativas:")
            if i[0]==0:
                print("- ", i[1])
                y=i[1]
                for j in d:
                    if j[0]==0:
                        w=j[1]
                        if w!=y:
                            print ("- ", j[1])

main ()

In the execution appears like this:

1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
2 Período:
-  Programação II
-  Teoria Geral da Administração
-  Cálculo I
-  Matemática Discreta
-  Sociologia
2 Período:
-  Programação II
-  Teoria Geral da Administração
-  Cálculo I
-  Matemática Discreta
-  Sociologia
2 Período:
-  Programação II
-  Teoria Geral da Administração
-  Cálculo I
-  Matemática Discreta
-  Sociologia
2 Período:
-  Programação II
-  Teoria Geral da Administração
-  Cálculo I
-  Matemática Discreta
-  Sociologia
2 Período:
-  Programação II
-  Teoria Geral da Administração
-  Cálculo I
-  Matemática Discreta
-  Sociologia
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
Optativas:
-  Cálculo II
-  Desenvolvimento Orientado a Objeto
Optativas:
-  Desenvolvimento Orientado a Objeto
-  Cálculo II

Mas deveria ser assim:
1 Período:
-  Introdução a Sistemas de Informação
-  Programação I
-  Introdução ao Computador
-  Introdução ao Cálculo
-  Lógica
-  Comunicação e Expressão
2 Período:
-  Programação II
-  Teoria Geral da Administração
-  Cálculo I
-  Matemática Discreta
-  Sociologia
3 Período:
-  Teoria Geral de Sistemas
-  Estruturas de Dados
-  Arquitetura e Organização de Computadores
-  Álgebra Linear
-  Probabilidade e Estatística I
-  Metodologia de Pesquisa
Optativas:
-  Desenvolvimento Orientado a Objeto
-  Cálculo II
  • The first loop is going through all the tuples of the array, then right after you make a second loop with all the items of the array again... That’s what’s causing the mistake. Either you make one of them static, or you use lambda to group them, because that would make the code much more beautiful.

  • Yes, because it was the only way I could find to print as I want.

1 answer

2


Well your code could be improved in several ways, but let’s just focus on how to make it correct. The problem is due to several repetitions that your code has(for j in d:), you go through the list and go through it again in two for's chained.

For example after picking up the first item and returning the period and its items you pass to the next item and also take the period and replay everything again.

->(1, 'Introdução a Sistemas de Informação'), 
  # você pega este item imprime o período inteiro na próxima interação 
  # você pega o item de baixo imprime o período e imprime ele inteiro 
  # novamente, você reimprime o período o mesmo numero de itens que ele
  # possui
  (1, 'Programação I'), 
  (1, 'Introdução ao Computador'), 
  (1, 'Introdução ao Cálculo'), 
  (1, 'Lógica'), 
  (1, 'Comunicação e Expressão')

So that you do not print the options beyond the required simply apply a aux variable.

    aux = None
    for i in d: 
        if i[0] != aux:
            aux = i[0]            

            if i[0]!=0:
                print (i[0], "Período:")
                x=i[0]
                for j in d:
                    if j[0]==x:
                        print ("- ", j[1])
            else:
                print("Optativas:")
                if i[0]==0:
                    print("- ", i[1])
                    y=i[1]
                    for j in d:
                        if j[0]==0:
                            w=j[1]
                            if w!=y:
                                print ("- ", j[1])
  • Wow, thank you so much!!!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.