Jump to content

Como corrigir erro na soma de números pares em Python?


Gafanhoto1984
Ir para a Solução Solucionado por Ryan Zimerman Leite,

Postagens Recomendadas

Boa tarde.

Estou iniciando meu aprendizado em Python através desse curso - https://panda.ime.usp.br/cc110/static/cc110/index.html - , que foi formulado usando como base esse livro do projeto Runestone - https://panda.ime.usp.br/pensepy/static/pensepy/index.html - . Tudo sem custo.

A minha ideia é concluir o curso (já que é mais curto) e na sequência passar para o livro e ir complementando com demais materiais disponibilizados na internet, como exercícios extras e quem sabe até pagar algum curso e/ou mentoria para agilizar as coisas, já que tenho 40 anos.

Minhas pretensões em aprender a programar são: 1 - Conseguir trabalho. 2 - Tentar o mestrado em arqueologia + análise de dados. 3 - Tirar do papel alguns projetos na área de tecnologia.

Dito isso segue o código que fiz para o exercício de "if"
 

def main():
seq_dig = 42

rest_div = seq_dig % 10
soma = 0

if rest_div % 2 == 0:
soma = soma + seq_dig % 10
seq_dig = seq_dig // 10

print(soma)

#------
main()


O objetivo era somar os números pares, mas a soma, nesse caso aí, que deveria ser 6, só dá 2.
 

seq_dig = 423486

rest_div = seq_dig % 10
soma = 0

while seq_dig > 1:

if rest_div % 2 == 0:
soma = soma + seq_dig % 10
seq_dig = seq_dig // 10

print(soma)


Dessa outra forma deu 27, ou seja, somou o 3 também.

Além da revisão do código eu gostaria de saber a opinião de vocês sobre essa forma que escolhi pra iniciar e o material que estou utilizando.

Obrigado pela atenção.

Editado por Casa do Desenvolvedor
Inserção do código na caixa de 'code'.
  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Solução

Olá @Gafanhoto1984 no primeiro caso sempre vai dar 2 mesmo:

def main():
    seq_dig = 42  # Define o valor inicial de seq_dig

    rest_div = seq_dig % 10  # Calcula o resto da divisão por 10
    soma = 0  # Inicializa a variável soma

    if rest_div % 2 == 0:  # Verifica se o resto é par
        soma = soma + seq_dig % 10  # Adiciona o dígito ao valor de soma
        seq_dig = seq_dig // 10  # Atualiza seq_dig removendo o último dígito

    print(soma)  # Imprime o valor final de soma

if __name__ == "__main__":
    main()

O valor de seq_dig inicial é 42.

1. Cálculo de rest_div:

  • rest_div = 42 % 10 resulta em 2.

2. Verificação da Paridade:

  • Como rest_div % 2 == 0 (2 é par), a condição do if é verdadeira.

3.Adição à Soma:

  • soma = soma + seq_dig % 10 resulta em soma = 0 + 42 % 10, o que dá soma = 2.

4.Atualização de seq_dig:

  • seq_dig = seq_dig // 10 resulta em seq_dig = 42 // 10, o que dá seq_dig = 4.

5.Impressão de soma:

  • O valor impresso será 2.

Você verifica apenas o último dígito de seq_dig e, se ele for par, o adiciona à soma. No caso do número 42, o último dígito é 2, que é par, então ele é adicionado à soma. Em seguida, o código remove o último dígito (resultando em 4), mas não continua o processo para verificar o próximo dígito.

Se você quer somar todos os dígitos pares (4 e 2) para obter o resultado 6, você precisa de um loop para analisar cada dígito. Aqui está uma versão corrigida do código para fazer isso:

def main():
    seq_dig = 42
    soma = 0

    while seq_dig > 0:
        rest_div = seq_dig % 10  # Pega o último dígito
        if rest_div % 2 == 0:  # Verifica se o dígito é par
            soma += rest_div  # Adiciona o dígito à soma
        seq_dig = seq_dig // 10  # Remove o último dígito

    print(soma)

if __name__ == "__main__":
    main()

Nesse segundo caso esta correto porém pelo fato de que você colocou rest_div = seq_dig % 10 fora do while colocou acima dele. Segue abaixo seu código corrigido.

seq_dig = 423486
soma = 0

while seq_dig > 1:
    rest_div = seq_dig % 10  # Pega o último dígito
    if rest_div % 2 == 0:  # Verifica se o dígito é par
        soma = soma + rest_div  # Adiciona o dígito par à soma
    seq_dig = seq_dig // 10  # Remove o último dígito

print(soma)

Em relação ao modo que escolheu estudar, é mais pessoal né rs, eu mesmo gosto de estudar como você lendo documentações e fazendo exercícios, tem gente que gosta de estudar vendo vídeos, curso. O importante é estudar, Python é uma linguagem muito boa, trabalho atualmente com Python porém na área de RPA (Robotic Process Automation). Em resumo não desista de estudar o importante é estudar a forma não importa como, Hoje no mercado muita gente diz que tal linguagem é melhor que tem mais vagas e bla bla bla, Cada linguagem se aplica a um propósito melhor que outra encontre com o que você quer trabalhar no futuro, não só a linguagem, mas a tecnologia, Python por exemplo, é bom para Analise de Dados, Automação é isso que você quer trabalhar no futuro? Uma dica, além de aprender a linguagem aprenda um banco de dados, SQL e etc... Também aprenda Docker.

Até Mais....

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Como corrigir erro na soma de números pares em Python?

Desculpa a demora pra retornar. Obrigado por responder e comentar sobre a questão que comentei na introdução, ajudou muito. Como essa questão não tem a proposta de solução no livro a gente fica na frustração para entender o erro.

Antes de iniciar os estudos nessa linguagem eu busquei entender a coisa desde de o início, começando pelo entendimento de como o  computador funciona e a diferença dela para as outras linguagens e finalmente decidi que nesse momento é do que eu preciso.

Parelelo ao aprendizado da programação eu tenho buscado leituras adicionais e vou incluir esses assuntos que tu recomendou (SQL e Docker). 

Exatamente isso que estou visando nesse momento, análise de dados e automação.

Valeu pela força.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora
×
×
  • Create New...