- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 2 anos, 12 meses atrás por
IcaroFilho.
-
AutorPosts
-
-
20 de abril de 2022 às 20:19 #91686
Antônio Merencio
ParticipanteO 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 #91716
IcaroFilho
ModeradorBom 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 #91748
Antônio Merencio
ParticipanteNã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 #91836
IcaroFilho
ModeradorEu 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.