1
resposta

Calculando a soma de números

def titulo(txt):
    print('=' * len(txt))
    print(txt)
    print('=' * len(txt))

def valores():
    valores = []
    while True:
        try:
            valor = float(input('Digite um valor: '))
            valores.append(valor)
            while True:
                opcao = input('Quer continuar? [S/N]').strip().upper()
                if opcao in 'NS':
                    break
                print('Digite S ou N.')
            if opcao == 'N':
                break

        except ValueError:
            print('Digite um valor válido.')
    return valores

def soma_valores(lista):
    soma = sum(lista)
    print(f'A soma total das receitas é: {soma}')

def main():
    titulo('SOMA DE NÚMEROS')
    lista = valores()
    soma_valores(lista)



if __name__ == '__main__':
    main()
1 resposta

Olá, Giovanni. Como vai?

Parabéns pela organização do seu código! Você foi além do básico ao utilizar funções para modularizar o programa, o que é uma excelente prática de desenvolvimento. Dividir o código em funções como titulo, valores e soma_valores torna o script muito mais fácil de ler, testar e manter.

Gostaria de destacar alguns pontos técnicos de alta qualidade na sua implementação:

  • Tratamento de Exceções: O uso do try/except com ValueError dentro do laço while é fundamental para evitar que o programa feche inesperadamente se o usuário digitar um texto em vez de um número.
  • Validação de Entrada: Você criou um segundo laço while apenas para validar a resposta "S" ou "N". Isso garante que o programa só prossiga com uma instrução válida, o que melhora a robustez do software.
  • Boas Práticas de Execução: O uso do if __name__ == '__main__': é o padrão profissional em Python. Ele garante que a função main() só seja executada se o script for rodado diretamente, e não quando for importado como um módulo por outro arquivo.

Para agregar ainda mais valor ao seu projeto, deixo duas sugestões:

  1. Manipulação de Listas: Se a lista de valores for vazia (caso o usuário decida não digitar nenhum número logo no início), a função sum() retornará 0, o que está correto. No entanto, você poderia adicionar uma verificação simples antes de imprimir, como if not lista: print("Nenhum valor foi inserido.").
  2. Formatação de Moeda: Como você mencionou "soma total das receitas" no print, pode ser interessante formatar o resultado para o padrão monetário brasileiro.

Veja como ficaria a função soma_valores com essa pequena melhoria:

def soma_valores(lista):
    if not lista:
        print('Nenhum valor foi inserido para o cálculo.')
    else:
        soma = sum(lista)
        # Formata o valor com duas casas decimais e substitui o ponto pela vírgula
        soma_formatada = f'{soma:.2f}'.replace('.', ',')
        print(f'A soma total das receitas é: R$ {soma_formatada}')

Dominar laços de repetição e funções dessa forma é o que separa um iniciante de um programador que entende a arquitetura da linguagem.

Espero que possa ter lhe ajudado!