Erro em código de exercício sobre

1. Erro em código de exercício sobre

Marcos Aurélio
Gafanhoto1984

(usa Linux Mint)

Enviado em 20/08/2024 - 12:54h

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 opnião de vocês sobre essa forma que escolhi pra iniciar e o material que estou utilizando.

Obrigado pela atenção.


  


2. Re: Erro em código de exercício sobre

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 20/08/2024 - 12:55h

Boa tarde!

Vamos revisar seu código e dar algumas orientações. Primeiramente, seu objetivo de somar os números pares parece claro, mas há alguns pontos que precisam ser ajustados.

No primeiro trecho de código, você está calculando o resto da divisão por 10 e tentando somar apenas o último dígito. O problema é que você não está atualizando `seq_dig` corretamente após dividir por 10. Além disso, o código deve estar em loop para que você possa verificar todos os dígitos até que `seq_dig` se torne 0.

Aqui está uma versão corrigida do seu código:

```python
def main():
seq_dig = 423486 # Atualizei para o valor correto

soma = 0

while seq_dig > 0:
rest_div = seq_dig % 10 # Calcula o último dígito

if rest_div % 2 == 0: # Verifica se é par
soma += rest_div # Soma o dígito se for par

seq_dig = seq_dig // 10 # Remove o último dígito

print(soma)

main()
```

Agora, o código deve retornar **12** para o valor de `seq_dig = 423486`, que são os números pares 4, 2 e 6.

### Sobre seu aprendizado:

O material que você escolheu parece ser uma boa


3. Não resolvido

Marcos Aurélio
Gafanhoto1984

(usa Linux Mint)

Enviado em 20/08/2024 - 15:42h


alexabolada escreveu: Não resolveu

Boa tarde!

Vamos revisar seu código e dar algumas orientações. Primeiramente, seu objetivo de somar os números pares parece claro, mas há alguns pontos que precisam ser ajustados.

No primeiro trecho de código, você está calculando o resto da divisão por 10 e tentando somar apenas o último dígito. O problema é que você não está atualizando `seq_dig` corretamente após dividir por 10. Além disso, o código deve estar em loop para que você possa verificar todos os dígitos até que `seq_dig` se torne 0.

Aqui está uma versão corrigida do seu código:

```python
def main():
seq_dig = 423486 # Atualizei para o valor correto

soma = 0

while seq_dig > 0:
rest_div = seq_dig % 10 # Calcula o último dígito

if rest_div % 2 == 0: # Verifica se é par
soma += rest_div # Soma o dígito se for par

seq_dig = seq_dig // 10 # Remove o último dígito

print(soma)

main()
```

Agora, o código deve retornar **12** para o valor de `seq_dig = 423486`, que são os números pares 4, 2 e 6.

### Sobre seu aprendizado:

O material que você escolheu parece ser uma boa





4. Re: Erro em código de exercício sobre

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 20/08/2024 - 15:42h

Olá! Vamos lá, a análise do seu código realmente está no caminho certo.

O loop que você implementou é essencial para iterar por todos os dígitos, e a correção na lógica de remoção do último dígito também é fundamental.

Aqui está uma versão ajustada do código, onde corrigi o operador de divisão, que deve ser o inteiro (`//`) em Python:

```python
def main():
seq_dig = 423486 # Valor a ser analisado

soma = 0

while seq_dig > 0:
rest_div = seq_dig % 10 # Último dígito

if rest_div % 2 == 0: # Verifica se é par
soma += rest_div # Soma se for par

seq_dig = seq_dig // 10 # Remove o último dígito

print(soma)

main()
```

Com essa correção, o código deve funcionar como esperado e retornar 12, somando os dígitos pares 4, 2 e 6.

Se você tiver mais dúvidas sobre Python ou precisar de ajuda com outros códigos, fique à vontade para perguntar! Além disso, lembre-se sempre de testar seu código em um ambiente Linux se estiver programando por lá.

Bons estudos! ?


5. Re: Erro em código de exercício sobre

Buckminster
Buckminster

(usa Debian)

Enviado em 22/08/2024 - 19:25h

1)
def main():
seq_dig = 42
soma = 0

# Check the last digit
if seq_dig % 10 % 2 == 0:
soma += seq_dig % 10

# Remove the last digit
seq_dig //= 10

# Check the new last digit
if seq_dig % 10 % 2 == 0:
soma += seq_dig % 10

print(soma)
main()

seq_dig manipula cada dígito. Conforme tu tinha feito, ele processava somente o último dígito apenas uma vez, não fazia um loop por todos os dígitos.
O segundo if acima executa a mesma verificação do primeiro if, mas para o novo último dígito (2 neste caso).
O resultado do código acima dará 6.

2)
seq_dig = 423486
soma = 0

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

print(soma)

- rest_div extrai o último dígito de seq_div.
- if rest_div % 2 == 0 checa se o dígito é par.
- soma += rest_div adiciona o dígito par em soma.
- seq_dig //= 10 remove o último dígito de seq_dig.
O resultado dará 24 (4+2+4+8+6).


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


6. Resolvido a parte do código

Marcos Aurélio
Gafanhoto1984

(usa Linux Mint)

Enviado em 24/08/2024 - 10:20h


Buckminster escreveu:

1)
def main():
seq_dig = 42
soma = 0

# Check the last digit
if seq_dig % 10 % 2 == 0:
soma += seq_dig % 10

# Remove the last digit
seq_dig //= 10

# Check the new last digit
if seq_dig % 10 % 2 == 0:
soma += seq_dig % 10

print(soma)
main()

seq_dig manipula cada dígito. Conforme tu tinha feito, ele processava somente o último dígito apenas uma vez, não fazia um loop por todos os dígitos.
O segundo if acima executa a mesma verificação do primeiro if, mas para o novo último dígito (2 neste caso).
O resultado do código acima dará 6.

2)
seq_dig = 423486
soma = 0

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

print(soma)

- rest_div extrai o último dígito de seq_div.
- if rest_div % 2 == 0 checa se o dígito é par.
- soma += rest_div adiciona o dígito par em soma.
- seq_dig //= 10 remove o último dígito de seq_dig.
O resultado dará 24 (4+2+4+8+6).


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


Nesse caso eu estava atualizando "soma" antes de fazer a comparação, então eu coloquei a atualização para fora do bloco if. Obrigado por responder.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts