Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Problema com captação de dados em Python

Bom dia/tarde/noite pessoal, jóia?

Estou aqui praticando coisas que eu aprendi de Python até agora na plataforma, e hoje estava tentando montar um sisteminha simples pra captar dados pelo terminal com input, criando uma lista de listas pra depois exportar como arquivo CSV. Tá quase funcionando, mas esbarrei em um último probleminha, mas antes, segue o código:

import pandas as pd
dados = [['Nome', 'Idade', 'Altura (cm)', 'Peso (kg)']]
template = []

while True:
    receptor = input('Digite o nome/valor: ')
    if(len(template) == 4):
        novo_registro = template.copy()
        dados.append(novo_registro)
        template.clear()
        continue
    if(receptor == 'quit'):
        print(dados)
        df = pd.DataFrame(dados)
        df.to_csv('Registros.csv')
        break
    template.append(receptor)

Em teoria, o terminal deveria ficar pedindo entrada de dados na ordem nome, idade, altura e por fim peso, uma vez que 4 entradas são computadas, o sistema copia a lista para uma outra variável, que então é adicionada à lista principal, e a lista que eu uso pra armazenar as entradas é limpada para receber mais 4 entradas até eu digitar 'quit' no terminal, quando eu faço isso o sistema retorna a lista principal e em seguida salva em CSV. Funciona, porém quando fui testar minha saída foi essa:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAlguém pra me ajudar porfavorzinho? :3

2 respostas
solução!

Oi Gabriel, acho que o problema está em usar o continue dentro do seu if. Pense na sequência de ações, assim que vc digita a informação '47', o seu código primeiro verifica se sua lista template tem tamanho 4, mas ela ainda não tem pq a inclusão do dado está apenas no final do loop. Ai quando vc vai digitar o nome 'Alberto', a sua lista tem 4 itens e limpa a lista, mas como tem continue no bloco, o código vai direto para a próxima iteração do loop, pulando a parte de incluir o dado no final. Lembre que quando vc usa continue tudo depois dele é ignorado e vai direto para a próxima iteração do loop.

Entendi, obrigado!