- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 2 anos, 7 meses atrás por IcaroFilho.
-
AutorPosts
-
-
20 de abril de 2022 às 20:19 #91686Antônio MerencioParticipante
O meu código por algum motivo (fiz dde uma forma diferente) ao passar valor negavito em alguns casos ele pula uma casa do “limite” que eu estabeleci, exemplo: de 10 a -12, de 7 em 7, ele vai mostar o -18, mesmo no while está especificiado inicio > fim, como poderá ser visto no código
eu código é:
def contador(inicio, fim, passo): print(f'Contagem de {inicio} até {fim} de {passo} em {passo}') cont = 10 acumulador1 = 0 if inicio < fim and passo != 0: if passo > 0: print(inicio, end=' ') while inicio < fim: inicio += passo print(inicio, end=' ') print('Fim!') print('-=' * 20) if passo < 0: print(inicio, end=' ') while inicio < fim: inicio -= passo print(inicio, end=' ') print('Fim!') print('-=' * 20) elif inicio > fim and passo != 0: print(inicio, end=' ') while inicio > fim: if inicio < fim: break if passo > 0: inicio -= passo print(inicio, end=' ') if inicio < fim: print("deu erro") if passo < 0: inicio += passo print(inicio, end=' ') if inicio < fim: break print('Fim!') print('-=' * 20) elif passo == 0: if inicio < fim: print(inicio, end=' ') while inicio < fim: inicio += 1 print(inicio, end=' ') print('Fim!') print('-=' * 20) else: print(inicio, end=' ') while inicio > fim: inicio -= 1 print(inicio, end=' ') print('Fim!') print('-=' * 20) contador(1, 10, 1) contador(10, 0, 2) print("Agora é sua vez de Usar o contador") a = int(input("Início:")) b = int(input("fim:")) c = int(input("passo:")) contador(a, b, c)
-
21 de abril de 2022 às 09:34 #91716IcaroFilhoModerador
Bom dia. isto ocorre pois a logica dentro da condição esta errada. vc manda mostrar após a operação.
elif inicio > fim and passo != 0: #print(inicio, end=' ') pode retirar esta linha while inicio > fim: if inicio < fim: break if passo > 0: print(inicio, end=' ') inicio -= passo if inicio < fim: print("deu erro") if passo < 0: print(inicio, end=' ') inicio += passo if inicio < fim: break print('Fim!') print('-=' * 20)
com as entradas
10
|-12
|7
, terá a saída:Contagem de 10 até -12 de 7 em 7 10 3 -4 -11 deu erro Fim!
Em termos aritméticos, a sua saída vai estar correta.. basta corrigir apenas algumas questões logicas e o código estará correto.
-
21 de abril de 2022 às 22:41 #91748Antônio MerencioParticipante
Não consegui entender muito bem meu erro, ele foi que o if passo deveria estar dentro do while?
-
23 de abril de 2022 às 11:18 #91836IcaroFilhoModerador
Eu peguei o trecho referente a condição que esta te dando a duvida e refatorei com comentários:
elif inicio > fim and passo != 0: # print(inicio, end=' ') => não precisa porque o print do laço já faz isso while inicio >= fim: # enquanto o valor inicial for maio ou IGUAL ao fim if inicio < fim: break # alterado para mesma linha por ser uma condição simples if passo > 0: print(inicio, end=' ') # alterado posição do print com o acumulador inicio -= passo if inicio < fim: print("Fim!") #alterado deu erro para fim if passo < 0: print(inicio, end=' ') inicio += passo # print('Fim!') não precisa, uma vez que se o inicio for maior que o fim, será impresso o fim print('-=' * 20)
o resultado é:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Agora é sua vez de Usar o contador Início:30 fim:-20 passo:2 Contagem de 30 até -20 de 2 em 2 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 0 -2 -4 -6 -8 -10 -12 -14 -16 -18 -20 Fim! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.