Ir ao conteúdo
  • Cadastre-se

Python


Nerun

Posts recomendados

aí,

Em BASIC, e em outras linguagens, tem uma instrução chamada "goto", que te remete para uma linha de comando já numerada caso determinadas condições sejam verdadeiras (no python sei que se usa if...elif...else para condições). Existe algo semlhante no python, pois é um recurso muito útil?

Link para o comentário
Compartilhar em outros sites

Cara.... na boa, n*o leva a mal, mas voc* est* na era jur*ssica da programa**o... o uso de goto foi abolido quando os programas passaram de 1000 linhas, isso h* vinte anos, ou at* mais... hehe... n*o h* nada parecido com goto em python, nem seria poss*vel (ou aceit*vel) ter... mas voc* tem fun**es, classes e metaclasses, claro...

Pra resolver o seu problema... voc* define uma fun**o com def nome(parametro1, parametro2, etc)... olha a documenta**o... tem um tutorial muito bom...

Se precisar meu icq * 35797487

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por PedroWerneck@05 Abr. 2003,19:50

Cara.... na boa, não leva a mal, mas você está na era jurássica da programação...

He, he, he... eu sei, é que a última linguagem que aprendi foi o BASIC mesmo... hehehe

Mas valeu, vou dar uma olhada nesse negócio de definir funções...

Link para o comentário
Compartilhar em outros sites

aí, vi como faz, mas não consigo imaginar como fazer uma função pro que eu quero, que na verdade é bem simples (um exemplo do que eu quero):

>>> #faço uma pergunta

>>> Num = input("\n Digite um número (7-13): ")

>>>

>>> #agora quero que a resposta satisfaça uma condição,

>>> #que como diz a pergunta, tem de ser um número,

>>> #inteiro, entre 7 e 13

>>> if Num < 7 or Num > 13:

>>>         print "Resposta errada, tente outra vez"

>>>

>>> #agora começa o problema, eu quero que ele faça a

>>> #pergunta de novo, e que no caso de continuar a não

>>> #satisfazer a condição, ele continue a perguntar e a

>>> #dar a resposta "Resposta errada, bla, bla bla",

>>> #até que a condição seja satisfeita, e então ele

>>> #prossegue para a próxima pergunta

>>>

>>> ABC = input("\n Qualquer pergunta...")

É importante também que a resposta seja armazenada na variável, porque o programa vai trabalhar com este número escolhido depois.

Como eu faço isso? É através de uma função?

Link para o comentário
Compartilhar em outros sites

Você pode colocar o seu código direto em uma função... isso se chama encapsular... veja só:

def leitura1():

   num = input("\n Digite um número (7-13): ")

   while not 7 < num < 13:

       num = input("\n Pelo amor de deus, criatura...\

       \n Digite um número entre 7 e 13: " )

   return num

Na primeira linha definimos a função... na segunda criamos a variável num que receberá o valor vindo do teclado através da função input(sim, é uma função, embutida na python)... na terceira linha, validamos o valor da variável num... enquanto (while) ele não estiver entre 7 e 13, continue pedindo o valor para o ***** que não entende o que é um número inteiro entre x e y... por fim, nós retornamos esse valor... da mesma forma que input retorna o valor lido pelo teclado...

Mas cá entre nós... isso é meio inútil, pois você teria que criar uma função para cada um dos valores que for pegar no seu programa, que como você já disse, tem muitos...  então faremos uma função que recebe dois argumentos... o maior e menor número dentro do qual o nosso deve estar (da mesma forma que input pode receber uma string como argumento para ser usada como prompt)

def leitura2(x, y):

   num = input("\n Digite um número (%d-%d): "% (x, y))    

   while not x < num < y:

       num = input("\n Pelo amor de deus, criatura...\

       \n Digite um número entre %d e %d: " % (x, y))

   return num

Mudou pouca coisa... na primeira linha, definimos a função, recebendo dois argumentos, x e y, menor e maior respectivamente... na segunda linha só muda a string do prompt que passa a usar x e y assim... na terceira linha usamos x e y como comparação no loop e o resto é quase igual...

Essa é perfeita... você pode reutilizar a função quantas vezes quiser no seu programa... mas ainda resta um problema... e se você usando a função passar por acaso um número x maior do que y ???

Resolvemos isso aqui, com um conceito que talvez seja novo pra você...

def leitura3(x, y):

   if x >= y:

       raise ValueError, "O primeiro argumento deve ser menor que o segundo"

   num = input("\n Digite um número (%d-%d): "% (x, y))    

   while not x < num < y:

       num = input("\n Pelo amor de deus, criatura...\

       \n Digite um número entre %d e %d: " % (x, y))

   return num

A única coisa que muda foi a adição da terceira linha... se vocâ passar um número x maior ou igual a y por engano (quando estiver escrevendo o programa. que isso fique claro), a função para a execução com a exception ValueError, printando a mensagem na string... note que essa mensagem jamais será lida por um usuário final (a menos que você deixe erros no programa) por isso nós usamos raise e não print...

Pra usar a função é só chamá-la, passando os argumentos, por exemplo...

valor1 = leitura3(7, 13)

valor2 = leitura3(3, 18)

Espero que tenha ficado claro... sempre que possível, encapsule o seu programa em funções dessa forma... isso é a chamada programação estruturada... isso que você está fazendo é a famosa programação orientada a spaguetti.... o ideal mesmo, seria criar um novo tipo de dados para o seu programa, embutindo todos os valores que você vai usar dentro de um objeto gerado por uma classe, mas isso vai pirar sua cabeça por enquanto... vai demorar um pouco até se livrar de todo o basic, hehehe...

Qualquer dúvida, poste aí...

Link para o comentário
Compartilhar em outros sites

Realmente, eu ainda estou muito preso ao BASIC, é meio difícil pra mim compreender esses conceitos (funções, procedures, módulos, classes, objetos etc.) das linguagens orientadas a objeto.

Mas entendi as funções que você passou, e a noção de encapsulamento. Conhecia a instrução while, e estava tentando construir a minha função com ela, mas como não sabia direito como usar (a documentação não é muito clara, precisava de mais exemplos) não consegui fazer.

Mas agora acho que com esses exemplos eu posso resolver a maior parte dos problemas aqui. Desde já, agradeço o tempo que você tem desperdiçado me ajudando.

Eu escolhi como meu primeiro programa algo que vai exigindo maior complexidade aos poucos, primeiro eu só precisava do print, input, if, elif, else e resolvia tudo, agora acrescentou-se funções e tal. Acho que do jeito que estou fazendo, vou acabar aprendendo mais sobre a linguagem, porque são ao todo 26 passos ou perguntas para o programa, e só fiz 6 até agora...

Valeu, vou trabalhar nessas funções!

Link para o comentário
Compartilhar em outros sites

A documentaçao da Python não é muito clara para você porque foi feita para pessoas com experiência em outras linguagens... ela apenas explica como fazer determinadas coisas, que você já conhece em outras linguagens, nela...

Você já entendeu o que sao funço"es(também chamadas de subs em algumas linguagens)... procedimentos (procedures) sao funço"es que não retornam nada (ou no caso de Python, retornam None), ou seja, só executam alguns comandos, sem retornar um resultado... objetos sao nada mais nada menos que variáveis um pouco anabolizadas, que podem ser moldadas à sua vontade, (e podem conter outras variáveis, e até mesmo funço"es)... classes sao os modelos de objetos, que pode ser perfeitamente um sinônimo para tipo... zequinha e juquinha sao dois objetos da classe pessoa, mas tem valores diferentes... as classes por sua vez sao geradas por metaclasses, mas esse já é um assunto mais obscuro, que 90% dos ditos programadores não compreende e nunca vai chegar a usar...

não se preocupa com o meu tempo não... eu gosto de ajudar, ainda mais quem está interessado na minha linguagem favorita... qualquer dúvida, poste aí, ou me passe um e-mail...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...