Logo Hardware.com.br
dog trainer
dog trainer Novo Membro Registrado
4 Mensagens 1 Curtida

Python - Erro no algoritmo

#1 Por dog trainer 11/06/2020 - 10:54
Olá
Quero uma ajuda com um problema em meu algoritmo. Sou iniciante em programação e me foi passado um exercício em que tenho que criar um algoritmo (em python), para escrever qualquer número entre 0 e 99 por extenso. Como este é um trabalho para iniciantes, eu devo perguntar qual o primeiro e o segundo dígitos separadamente. O problema é que na variável das dezenas a saída da resposta do exemplo sai sempre em uma coluna a frente ex: se o numero digitado for 20, o algoritmo retorna o valor trinta. Não sei como resolver esse problema. Se alguém puder me dar alguma dica... Desde já agradeço quem puder ajudar.

Anexo do post

Anexos

dog trainer
dog trainer Novo Membro Registrado
4 Mensagens 1 Curtida
#3 Por dog trainer
11/06/2020 - 15:29
apimente.br disse:

Perdão. O código é
[code=python]uni = ('zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove')
num = ('dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove')
dez = ('dez', 'vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta', 'oitenta', 'noventa', 'cem')
numero1 = int(input('Digite o primeiro dígito:'))
numero2 = int(input('Digite o segundo dígito:'))
if numero1 == 0 and numero2 == 0:
print('Você digitou o número zero')
else:
if numero1 == 0 and 1 <= numero2 <= 9:
print(f'Você digitou o número {uni[numero2]}')
else:
if numero1 == 1 and 9 >= numero2 >= 0:
print(f'Você digitou o número {num[numero2]}')
else:
if 1 < numero1 <= 9 and numero2 == 0:
print(f'Você digitou o número {dez[numero1]}')
else:
print(f'Você digitou o número {dez[numero1]} e {uni[numero2]}')[/code]
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#4 Por esquiloesper...
12/06/2020 - 00:14
Olá @dog trainer, seja bem-vindo à Comunidade GdH.
- Olha, é tudo questão de lógica baseada em conceitos bastante simples:
  • O conceito é que o índice de arranjos (arrays) sempre parte de 0 (zero).
  • A lógica em "20" pegará o índice '2' e assim (pelo conceito anterior) ele localizará o terceiro item do arranjo = 'trinta'

Sabendo disso, existem duas soluções possíveis:
[LIST=1]
Posicionar 'vinte' como o terceiro item
Subtrair de 2 o valor necessário para que ele coincida com a posição onde 'vinte' está
[/LIST]

Solução 1
dez = ('zero', 'dez', 'vinte', 'trinta'...
mas como zero e dez já são tratados nos casos anteriores, vale fazer também:

dez = ('', '', 'vinte', 'trinta'...


Solução 2
uni = ('zero', 'um', 'dois...
num = ('dez', 'onze', 'doze'...
dez = ('vinte', 'trinta'...
...
print(f'Você digitou o número {dez[numero1 - 2]}')


É isto!
Teste as duas soluções e veja qual gosta mais.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#6 Por esquiloesper...
13/06/2020 - 10:43
Em python "else+ If = "elif"
- Se estiver liberado, com ele o seu código fica muito mais limpo.

Outro fator que deixa o código poluído são as repetições. E isto acontece especialmente com as validações.

Fica muito melhor trabalhar com variáveis limpas do que ter de se preocupar com elas o tempo todo.
Ou seja, ao validar os valores imediatamente você fica livre para fazer todo o resto de maneira muito mais fácil e simples.

Observe:
[code=python]
uni = ('zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove')
num = ('dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove')
dez = ('vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta', 'oitenta', 'noventa', 'cem')
numero1 = int(input('Digite o primeiro dígito:'))
numero2 = int(input('Digite o segundo dígito:'))
if 9 >= numero1 >= 0 and 9 >= numero2 >= 0:
if numero1 == 0 and numero2 == 0:
print('Você digitou o número zero')
elif numero1 == 0:
print(f'Você digitou o número {uni[numero2]}')
elif numero1 == 1:
print(f'Você digitou o número {num[numero2]}')
elif numero2 == 0:
print(f'Você digitou o número {dez[numero1-2]}')
else:
print(f'Você digitou o número {dez[numero1-2]} e {uni[numero2]}')
else:
print('Os algarismos devem ser positivos e situados entre 0 e 9.')
[/code]


Tarefa: Pode ficar ainda menor! - Vai tentar?
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal