Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Sugestão] Solução com o módulo re

import re

infos = input("Digite os dados do aluno no formato Nome, Idade, Nota, separados por vírgula, e nessa ordem:\n")

matches = re.finditer(r"(?P<Aluno>\w+)\s*,\s*(?P<Idade>\d+)\s*,\s*(?P<Nota>\d+[.,]*\d*)", infos)

students_infos = [info.groupdict() for info in matches]

for student in students_infos:
    for k, v in student.items():
        if k == "Nota":
            v = v.replace(",", ".")
        print(f"{k}: {v}")
    print("\n")

Aqui nessa proposta, utilizo o módulo de Regex do Python para poder já recuperar as informações (na forma pedida pelo enunciado) de maneira global, fazendo um match entre o padrão aguardado de entrada e o que realmente foi entrado pelo usuário.

O pattern que usei na regex é decomposto em três grupos de match: (?P<Aluno>\w+)\s*, esse pattern faz um match com qualquer sequência com um ou mais letras seguidas de zero ou mais espaços e terminando obrigatoriamente na vírgula, com a sequência de letras sendo colocadas em um atributo chamado Aluno no objeto de match; \s*(?P<Idade>\d+)\s*, esse pattern faz um match com qualquer sequência de zero ou mais espaços, seguidos por um ou mais dígitos, seguidos por zero ou mais espaços e uma vírgula, sendo que a sequência de dígitos é colocada em um atributo chamado de Idade; por fim, \s*(?P<Nota>\d+[.,]*\d*) esse pattern faz um match com qualquer sequência de zero ou mais espaços, seguidos por um ou mais dígitos, uma separação de decimal com vírgula ou ponto (se existir), com zero ou mais dígitos para os decimais, com somente os dígitos no atributo Nota.

O método finditer coloca todos os matches em um iterador para não ocupar espaço demais na memória.

Para montar a lista de estudantes, uso um list comprehension usando o método groupdict de um objeto Match para recurar um dicionário com os grupos de valores.

Por fim, o for em cada estudante fará a representação das informações passadas, sendo que cada estudante será um dict, e com o método items acessamos a chave e valor. Se a chave for Nota, já faço a substituição da vírgula por ponto.

Obviamente o código não faz conversões, pois não foi o requisitado. Porém, aqui exploro mais o uso do Regex para poder recuperar dados de textos digitados em sequência, como os exercícios anteriores trabalharam. Logo, essa está longe de ser a forma mais segura de fazer uma análise, mas é elegante do ponto de vista de análise de textos.