4
I have created two lists, one of notes and one of names. The program must sort notes in ascending order, but it must sort names as well. I tested it as follows:
notas = [5, 7, 9, 3]
nomes = ["Alfredo", "Camila", "Debora", "Joao"]
Fortunately it worked, with the following result:
[9, 7, 5, 4]
["Debora", "Camila", "Alfredo", "Joao"]
I tested it again:
notas = [5, 9, 2, 7]
nomes = ["Joao", "Debora", "Camila", "Alfredo"]
It went wrong in the result:
[9, 7, 5, 2]
['Camila', 'Joao', 'Alfredo', 'Debora']
I tried many times and could not solve.
My code:
#---------------------------------------------------------------
lista_notas = []
backup_notas = []
ordem_list = []
lista_nomes = []
backup_nomes = []
i_to_while = 0
ii_to_while = 0
#---------------------------------------------------------------
def decrescente(notas):
lista_notas.append(notas)
backup_notas.append(notas)
lista_notas.sort()
lista_notas.reverse()
return lista_notas, backup_notas
#---------------------------------------------------------------
def descobrindo_posicoes(notas, original):
ii = 0
while ii != len(notas):
ordem = notas.index(original[ii])
ordem_list.append(ordem)
ii+=1
return ordem_list
#---------------------------------------------------------------
def insere_nomes(nomes):
lista_nomes.append(nomes)
backup_nomes.append(nomes)
return lista_nomes, backup_nomes
#---------------------------------------------------------------
def sincronizando_nomes(notas, ordem, nomes, original, original_notas):
print(notas, ordem, nomes, original, original_notas)
n = 0
while n <= len(nomes)-1:
nomes[n]= original[ordem[n]]
nomes_resultado = nomes
n+=1
print("Antes de programa")
print(original_notas)
print(original)
print("")
print("Resultado")
print(notas)
print(nomes)
#---------------------------------------------------------------
while True:
if i_to_while == 4:
break
decrescente(int(input("Suas notas? (4 notas suportadas): ")))
i_to_while += 1
#---------------------------------------------------------------
descobrindo_posicoes(lista_notas, backup_notas)
#---------------------------------------------------------------
while True:
if ii_to_while == 4:
break
insere_nomes(str(input("Seus nomes? (4 nomes suportados: ")))
ii_to_while += 1
#---------------------------------------------------------------
sincronizando_nomes(lista_notas, ordem_list, lista_nomes, backup_nomes, backup_notas)
#---------------------------------------------------------------