Ir ao conteúdo
  • Cadastre-se

Python Antecessor e Sucessor Python


Ir à solução Resolvido por Pimptech,

Posts recomendados

Olá pessoal, como eu poderia fazer um programa que leia um número e imprima seu antecessor e sucessor.

 

Estou começando aprender agora sobre o Python, por isso se não for incomodo poderia me explicar o que foi feito. Eu sei que deve ser simples, mas me ajudaria a ter um caminho a seguir.

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

num = raw_input("Digite um numero: ")if num == "0":    result = int(num)+1    print("Sucessor: " + str(result))    print("Antecessor: 0")elif num > int(num):    result = int(num)+1    print("Sucessor: " + str(result))    result = int(num)-1    print("Antecessor: " + str(result))
  • raw_input recebe um valor string;
  • Depois verifico se é 0, pois se for não possui antecessor;
  • E se for maior que zero eu printo os dois;
  • Nesse caso é necessário fazer o typecast, pois o retorno do raw_input é string e para somar e subtrair precisamos que seja INT;
  • Para printar o resultado precisamos voltar o valor para string;

Caso tenha alguma dúvida é só perguntar.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

@Pimptech a priore ocorreu alguns erros no código que tu me passou, então fui modificando o meu código deu certo assim:

 

num = input("Digite um numero: ")if num == "0":    result = int(num)+1    print("Sucessor: " + str(result))    print("Antecessor: 0")elif num > "0":    result = int(num)+1    print("Sucessor: " + str(result))    result = int(num)-1    print("Antecessor: " + str(result))

Queria saber se está Ok mesmo, e tenho outra dúvida sempre que executo o programa e coloco um número o resultado é dado, mas para eu usar novamente tenho que executar de novo. Teria uma forma de sempre que eu colocar o numero e ele dá o resultado e o processo continuar sem que eu execute novamente? por via das dúvidas estou usando IDLE.

 

Outra questão, e quanto aos número negativos? não posso colocar seu sucessor e antecessor? 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

 

@Pimptech a priore ocorreu alguns erros no código que tu me passou, então fui modificando o meu código deu certo assim:

 

num = input("Digite um numero: ")if num == "0":    result = int(num)+1    print("Sucessor: " + str(result))    print("Antecessor: 0")elif num > "0":    result = int(num)+1    print("Sucessor: " + str(result))    result = int(num)-1    print("Antecessor: " + str(result))

Queria saber se está Ok mesmo, e tenho outra dúvida sempre que executo o programa e coloco um número o resultado é dado, mas para eu usar novamente tenho que executar de novo. Teria uma forma de sempre que eu colocar o numero e ele dá o resultado e o processo continuar sem que eu execute novamente? por via das dúvidas estou usando IDLE.

 

Outra questão, e quanto aos número negativos? não posso colocar seu sucessor e antecessor? 

 

 

Bom dia @Nepu...

Eu utilizei a ferramenta online http://repl.it/rodei meu antigo código e está ok.

Mas peguei esse novo código e adaptei, veja:

num = 0while num != -1:    num = input("Digite um numero: ")    if num == 0:        result = int(num)+1        print("Sucessor: " + str(result))        print("Antecessor: 0")    elif num > 0:        result = int(num)+1        print("Sucessor: " + str(result))        result = int(num)-1        print("Antecessor: " + str(result))

Neste caso eu adicionei um while para ficar em loop infinito e só sair dele quando você digitar "-1". Consegue ver isso no código ou tem alguma dúvida ?

Se tiver é só perguntar.

 

O zero é o "primeiro" número, e não existe antecessor, logo não existem número negativos.

Veja:

http://www.colegioweb.com.br/trabalhos-escolares/4-ano/o-sucessor-e-o-antecessor-de-um-numero-natural.html

 

Qualquer dúvida é só falar.

 

Abraço!

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
  • Membro VIP
8 horas atrás, Yuri Alcântara disse:

Brother, eu também estou aprendendo então vou lançar o código que eu montei. Caso tenham sugestões fiquem a vontade.


n1 = int(input('Digite um número: '))
s = n1 + 1
sub = n1 - 1
print('O sucessor de {} é {}, e seu antecessor é {}'.format(n1,s,sub))

 

Não conheço a sintaxe do Python, mas a lógica me parece correta. Minha sugestão seria apenas na nomenclatura da variável, ou seja: em vez de s, utilizar suc.

 

Ou utilizar sucessor e antecessor mesmo. Etc.

adicionado 3 minutos depois

Só um adendo:
A definição de "antecessor" e "sucessor" vai depender do tipo numérico estabelecido no enunciado. Se for para Inteiros, o código me parece correto, mas se fosse, por exemplo, para Naturais, aí não poderia ser menor que 0.
 

Faz mais sentido ser INTEIROS mesmo.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

gente o jeito mais fácil é:

n1 = int(input('escolha um numero'))

print('o se antecessor é', n1-1)

print('o seu sucessor é', n1+1)

mais eu acho que fica mais bonito assim:

n1 = int(input('digite um numero'))

n2 = n1+1 n3 = n1-1

print('o seu sucessor é {:=^20} \n o seu antecessor é {:=^20}'.format(n2, n3))

n4 = str(input('esta certo?'))

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • 6 meses depois...

Minha versão 2022.

PyCharm 2022.2.3 (Community Edition)
Build #PC-222.4345.23, built on October 10, 2022
Runtime version: 17.0.4.1+7-b469.62 amd64

 

# Versão simples

num = input('Digite um numero: ')

result = int(num)-1
print(f'Antecessor: {result}')

result = int(num)+1
print(f'Sucessor: {result}')

 

# Versão quando o número , < 0 > (zero) for digitado e não quer que imprima um número negativo.

num = input('Digite um numero: ')

if num == '0':
    print('O número digitado foi < 0 >, o seu antecessor é um número negativo')
    result = int(num) + 1
    print(f'Sucessor: {result}')

elif num > '0':
    result = int(num)+1
    print(f'Sucessor: {result}')
    result = int(num)-1
    print(f'Antecessor: {result}')


 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Simples:

 

n=int(input('digite um número:'))

print("analisando o valor {}, seu sucessor é {} e o antecessor é {}".format(n,(n+1), (n-1)))

 

Quanto menos variáveis usar menor memória utiliza. Tem q ser uma programação mais inteligente, criar muitas variáveis com recursos é uma programação mais arcaica.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Em 29/01/2024 às 19:38, ca_mauricio disse:

Quanto menos variáveis usar menor memória utiliza

Não é verdade! Você precisa entender antes como a linguagem e o ambiente de exeução lidam com as variáveis. Em linguagens compiladas, o compilador geralmente é esperto o suficiente para retirar as variáveis inúteis, por ex.

 

Em Python, as vezes as variáveis compartilham o mesmo endereço em memória pra um valor, por ex, todos os números de -5 a 256 já estão em memória. Quando você usa algum número nesse intervalo o interpretador do CPython já pega um valor alocado. Todavia, para números maiores, ele cria um novo objeto.
O mesmo com strings, tipo, se você definir duas variáveis com strings iguais o endereço de memória delas vão ser o mesmo! Então independente de quantas variáveis você criar, o uso de memória permanece o mesmo.

 

Fora que é boa prática evitar "valores mágicos", isso atrapalha o desenvolvimento, principalmente se mais de uma pessoa estiver trabalhando no projeto. Você sempre pode adicionar comentário, mas na minha opinião é melhor ter um código claro e limpo do que um código cheio de comentários para explicar coisas simples.

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • mês depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...