1
resposta

Dúvida na resolução de um exercicio

Estou realizando uma série de desafios da faculdade, Universidade Federal do ABC em SP. mas fiquei preso em um exercício e gostaria de saber se alguém consegue me ajudar

Segue o exercício em questão, e meu código atual, seguidos do erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Exemplo de entrada de dados:

19
3
6
4
4
6
3
4
4
4
5
7
8
2
3
8
5
1
8
4

O resultado em questão deve ter EXATAMENTE está saida: Lista dos elementos cuja soma = 11

(0,11) => [3,8]   
(0,14) => [3,8]     
(0,17) => [3,8]  
(1,9) => [6,5]  
(1,15) => [6,5]  
(2,10) => [4,7]  
(3,10) => [4,7]  
(4,9) => [6,5]  
(4,15) => [6,5]  
(5,11) => [3,8]  
(5,14) => [3,8]  
(5,17) => [3,8]  
(6,10) => [4,7]  
(7,10) => [4,7]  
(8,10) => [4,7]  
(10,18) => [7,4]  
(11,13) => [8,3]  
(13,14) => [3,8]  
(13,17) => [3,8]  
Multiplos de 3 = 5

Segue o meu código:

x = int(input())
vet = []
i = 0
while i != x:
    vet.append(int(input()))
    i = i + 1

saida = []
mult_tres = []

for n in vet:
    c = 0
    index = 0
    while c != x:
        soma = n + vet[index]
        if soma == 11:
            saida.append(f"({vet.index(n)},{c}) => [{n},{vet[index]}]")

        index +=1
        c += 1            
    if n % 3 == 0 :
        mult_tres.append(n)

# remove_dupl = list(dict.fromkeys(saida)) IGNORAR

for linha in saida: 
    print(linha)
print(len(mult_tres))

A saída deste código com a dada entrada é (ignorando os textos com as outras saídas que no caso já resolvi):

(
0,11) => [3,8]   
(0,14) => [3,8]  
(0,17) => [3,8]  
(1,9) => [6,5]  
(1,15) => [6,5]  
(2,10) => [4,7]  
(2,10) => [4,7]  
(1,9) => [6,5]  
(1,15) => [6,5]  
(0,11) => [3,8]  
(0,14) => [3,8]  
(0,17) => [3,8]  
(2,10) => [4,7]  
(2,10) => [4,7]  
(2,10) => [4,7]  
(9,1) => [5,6]  
(9,4) => [5,6]  
(10,2) => [7,4]  
(10,3) => [7,4]  
(10,6) => [7,4]  
(10,7) => [7,4]  
(10,8) => [7,4]  
(10,18) => [7,4]  
(11,0) => [8,3]  
(11,5) => [8,3]  
(11,13) => [8,3]  
(0,11) => [3,8]  
(0,14) => [3,8]  
(0,17) => [3,8]  
(11,0) => [8,3]  
(11,5) => [8,3]  
(11,13) => [8,3]  
(9,1) => [5,6]  
(9,4) => [5,6]  
(11,0) => [8,3]  
(11,5) => [8,3]  
(11,13) => [8,3]  
(2,10) => [4,7]  

O ERRO: Conforme observado, quando a função list.index procura a posição de N, ele retorna a posição do primeiro elemento apenas, mas o mesmo aparece em outras partes da lista e a ordem da lista original é ESSENCIÂL para obter o resultado corretor, eu gostaria de saber uma forma de descobrir o index de N sem que ele pare na primeira aparição do mesmo.

agradeço desde já, caso queira entrar em contato para saber mais informações entra em contato no email felipe_labadessa@outlook.com

o prazo de entrega desta atividade será amanhã as 19hrs da noite.

1 resposta

Olá Felipe, como você está?

Ao ler o seu pedido de ajuda, notei que você mencionou que o prazo de entrega da atividade era para ser "amanhã às 19h da noite". No entanto, como a postagem foi feita há alguns meses, imagino que você já tenha resolvido essa atividade.

De qualquer forma, para resolver o problema, podemos percorrer a lista com um loop for e verificar se o número atual é igual ao número procurado. Se for, adicionamos o índice desse número em uma lista de índices. No final, imprimimos essa lista de índices. Podemos fazer isso de forma mais simples usando a função enumerate do Python, que nos dá tanto o índice quanto o valor de cada elemento da lista. Abaixo, o código completo:

x = int(input())
vet = []
i = 0
while i != x:
    vet.append(int(input()))
    i = i + 1

saida = []
mult_tres = []
soma_alvo = 11

for i, n in enumerate(vet):
    for j, m in enumerate(vet[i+1:], i+1):
        soma = n + m
        if soma == soma_alvo:
            saida.append(f"({i},{j}) => [{n},{m}]")

    if n % 3 == 0 :
        mult_tres.append(n)

for linha in saida: 
    print(linha)
print(f"Lista dos elementos cuja soma = {soma_alvo}\n\nMultiplos de 3 = {len(mult_tres)}")

Resultado:

(0,11) => [3,8]
(0,14) => [3,8]
(0,17) => [3,8]
(1,9) => [6,5]
(1,15) => [6,5]
(2,10) => [4,7]
(3,10) => [4,7]
(4,9) => [6,5]
(4,15) => [6,5]
(5,11) => [3,8]
(5,14) => [3,8]
(5,17) => [3,8]
(6,10) => [4,7]
(7,10) => [4,7]
(8,10) => [4,7]
(10,18) => [7,4]
(11,13) => [8,3]
(13,14) => [3,8]
(13,17) => [3,8]

Lista dos elementos cuja soma = 11
Multiplos de 3 = 5

Abraços e sucesso na faculdade!