aula 3: apredendo Range, criar classes e tabelas

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

aula 3: apredendo Range, criar classes e tabelas

Mensagem por guilhermemig17 em Dom 21 Nov 2010, 17:31

apredendo Range, criar classes e tabelas...

nesse tutorial vamos aprender sobre uma das funções mais usadas...
o Range...
vamos começar com essa função contida no python.

range: o que é?


range vem do inglês e significa:
substantivo
alcance
série
variedade
variação
distância
âmbito
extensão
ordem
cordilheira
classe
coleção
fileira
fila
calibre
serrania
fogo
verbo
vaguear
alinhar
classificar
ordenar
enfileirar

bom o range é isso tudo, ele faz 2 coisas:
coloca em filas, e cria grupos de funções..
veja o que ele faz:
digite no Pype range...
vai aparecer isso:

Código:

>>> range
<built-in function range>
>>>

agora digite isso:
Código:

>>> range(2)
[0, 1]
>>>
percebeu?
vamos explicar:
range é uma função que mostra a ordem de numeros entre ''[]''(colchetes).
assim o numero entre parênteses define quantos numeros terá esse grupo(entre colchetes).
se digitarmos:
range(3)
vai aparecer o grupo entre colchetes:
[0,1,2]
se digitarmos:
range(4)
[0,1,2,3]
entendeu?
so lembrando que ele conta começando com zero, como você percebeu...
agora tente isso:
range(1+2+3)
vai aparecer:

Código:

[0,1,2,3,4,5]
simples, por que ele calcula quantos numeros irá aparecer, e não quais vão aparecer...
assim 1+2+3 será 6...
então aparecerá 6 numeros:
[0,1,2,3,4,5]
6 numeros

tente isso denovo:
Código:

>>> range(1+2)
>>> [0, 1, 2]

ok?
ele mostra quantos e não quais!

agora que entendemos o Range vamos entender outra coisa...
podemos configurar o Range para que mostre, por exemplo, um numero em cada linha...
a função:
for p in
configura alguma atribuição/função do motor.
assim a gente pode configurar o range como se fosse o Def.
veja so:
Código:

for p in range(5): # o que está entre parenteses é o numero de grupos, como dito antes^^
    2+2 # o que deve aparecer


vamos ver o que aparece:
Código:

4
4
4
4
4
a função for p in range configura para que o Range apareça em cada linha, sem colchetes...
e configura o que deve aparecer, ao contrário de só range, que configura quantos numeros devem aparecer...
assim podemos fazer:
Código:
for p in range(2)
    'ola'

'ola'
'ola'

e assim vai...
entendeu?
teste outras dessas funções...
ok?
ok!

2#podemos substituir o ''p''

podemos fazer isso:
for g in range
for h in range
for a in range
for ab in range
for ola in range
for variavel in range

portanto, concluimos que podemos susbtituir o ''p'' por qualquer palavra...

3#entendendo melhor for e in

bom do inglês as palavras:
for = de/para
in = em

assim entendemos que:
para g em range(2):
...

é como se fosse uma configuração que indica que para o range vai ser...
é como se fosse isso.
é um modo de configurar range e até outros funções...
basta você testar...

4#por que isso é importante em jogos

bom se você quiser repetir um personagem, um calculo, um valor, ou o que seja...
o metodo é usar range...
invéz de ficar digitando por exemplo:
objeto 1 == 2
objeto 1 == 3
e assim vai...
use o range para configurar e mudar isso...
não se esqueça que pode-se usar Def junto com range para criar mais/cobinadas funções...
não esqueça que python é uma super calculadora e pode combinar diferentes formas matemáticas e funções...

criando classes

vamos aprender a criar uma coisa mais avançada... as classes...
a função principal das classes é chamada Class.
digite no PyPE class e logo ele indicará que é uma função em azul...
lembrando que esse tipo de função não pode ter variavel. EX:
não podemos colocar
if = ola
ou assim vai...
tudo que é azul não pode ser substituido como variavel.
mas outras funções como range que não fica azul podem ser susbtituidas.
como:
range = grupo

1#fazendo classes

para fazer classes é como def, basta colocar:

Código:
class variavel:
      2+2 #função proposta

so que lembrando:
sem o (x) do Def.
senão da errado...


agora digite:
variavel
vai aparecer tipo isso:
Código:
<class __console__.ola at 0x020C0B70>

envez da função...
esse é o numero da classe no console

2#fazendo a função da classe

antes de fazer uma classe, ou faze-la funcionar, vamos entender o que é.
classe nada mais é que a definição de um objeto.
a classe quando atribui a outro objeto, isso é chamado de instância da classe.
o objeto é configurado segundo sua classe.
''Uma classe é definida em código-fonte, e possui nome, um conjunto de atributos e métodos.''
os métodos são as funções dentro da classe, orientada ao objeto.
os argumentos são as funções dentro dos metódos. são em geral funções matématicas e denominadora.

2.1 função self


bom todos os agumentos, em geral, tem uma chave chamada Self.
ela é liga á varias funções dentro da classe, e dos métodos.
por isso nunca se esqueça dela.
vejamos agora um exemplo de um código que eu explicarei para que você possa entender melhor.

Código:
class Nó:# o nome da classe
  esquerda, direita, valor = None, None, 0 #define o valor das palavras esquerda, direita e valor... veremos melhor o que é None depois
 
  def __init__(self, valor): # __init__ é uma espécie de construtor, quando uma instância de uma classe é criada,

    # construtor dos valores
    self.esquerda = None #valores ligados ao Self
    self.direita = None #valor ligado ao Self
    self.valor = valor #veja que self é ligada com o ponto. No python várias coisas são ligadas assim. Inclusive no panda3D e suas funções.
 
class Ordenação:
  def __init__(self):
    # inicializa a raiz da árvore #vamos ver depois disso o que é árvore e sua raiz na programação
    self.root = None #depois veremos o que é None.
 
  def AdicionaNo(self, valor):
    return Nó(valor) #return é a função que retorna algum objeto, função, instância ou metodo. guarde essa palavra.
 
  def Inserir(self, raiz, valor):
    # inserir novo valor
    if raiz == None: #condição de se raiz for igual á None(nenhum valor)
        # não há nenhum valor
        return self.AdicionaNo(valor)
    else:
        # já está na árvore
        if valor <= raiz.valor: #condição se valor for menor ou igual á raiz.valor
            # se os dados forem menores do que os armazenados
            # entra na sub-árvore do lado esquerdo
            raiz.esquerda = self.Inserir (raiz.esquerda, valor)
        else:
            # entra na sub-árvore do lado direito
            raiz.direita = self.Inserir (raiz.direita, valor)
        return raiz

vamos entender algumas coisas agora.
1° o que é None?
None é definido como valor nenhum. Logo se digitarmos no pype:
a = None
>>> a
resposta:
>>>
entendeu?
None indica que um objeto não tem valor. Assim podemos por exemplo configurar isso, o seu valor ou outras coisas...

o que é _init_?


_init_ é __init__ é uma espécie de construtor, quando uma instância de uma classe é criada.
ela é uma abreviatura para inicialização.
podemos fazer como teste, isso:
Código:
class Point():
pass

point = Point()
point.x = 3.0
point.y = 4.0

ou podemos fazer isso:

Código:
class Point():
def __init__(self, x=0,y=0):
self.x = x
self.y = y

tente entender pelo lado matemático.
lembre-se que isso é um termo mais avançado, e está nessa 3° aula, para a gente conhecer melhor.
depois veremos, mais tarde, como fazer melhor classes, e orientações á objetos.
enfim, veremos como criar objetos completos segundo seus objetivos.

Agora você pode fazer um ponto como este:

= ponto ponto (3,4)

ou

= ponto ponto () # o que lhe dá um ponto de padrão 0,0.

veja esse site que explica uma questão de _init_:

_init_

busque mais definições para entender melhor.
voltando...

o que é self?

self nada mais é que uma espécie de variavel do metodo usado.
é como se invez de eu escrever o metodo, colocasse o Self.
por isso definimos no _init_ self e o resto entre parênteses.

o que é pass?

vimos no codigo de exemplo, e o codigo acima, sobre pass.
pass nada mais é que, uma indicação que nada será feito, a não ser criar a classe, que terá nada.
é como se eu fizesse isso:

class ola:
'nada a dizer'
invés de colocar assim, para definirmos que a classe não terá nada, so é pra definir que a classe existirá. assim:
Código:
class ola
      pass
ok?
nada será feito, a não ser definir a classe.

o que é árvore? e raiz?

árvore na programação é como se fosse uma familia hierárquica de valores, objetos e etc.
assim um exemplo seria:
if 2>1:#linha A
if 2>1:#linha B
if 2>1#linha C
print "ola" #linha D


é um pequeno exemplo de árvore.
a linha D está contida nas linhas C,B,A.
a linha C está contida nas linha A,B.
a linha B está contida na linha A.

a raiz da árvore é a linha A. por que ela é o começo do código, o começo da árvore. É a raiz, é a base.
se a linha A não existir nenhuma outra existe correto?
pois é, que nem uma base/raiz de uma arvore.

o que é return?

return é uma função que retorna o resultado.
por exemplo:
digite isso:

Código:

def retorna(x,y):
    if 2>1:
                  return x
    else:
                  return y
se digitarmos depois:
Código:

retorna(2,3)
linha de resposta: 2

por que 2>1
então vai retornar o valor X, e exibir.
o valor X é o 2.

retorna(3,2)
o valor X é 3
retorna(4,9)
o valor X e 4
o valor Y é 9.
entendeu?
teste mais sobre isso!

bom vimos agora o que são classes, Métodos, instâncias, objetos, definindo valores, e:
o que é None, Self, return, Pass, árvores e etc.
vamos aprender a chamar uma classe.
obs:se você não entender aquele codigo grande acima, não tem problema, a gente so tá no inicio... o importante é olhar no modo matemático e entender as funções que expliquei.

voltando...
podemos salvar o que fizemos como arquivo.py
podemos fazer um programa inteiro assim...
veja um outro codigo para aprender mais:

Brincando com instância de classe:
Código:
class A:
  a = 1 # atributo publico
  __b = 2 # atributo privado a class A
 
class B(A):
  __c = 3 # atributo privado
 
  def __init__(self):
    print self.a
    print self.__c
 
a = A()
print isinstance(a, B) # ''Objeto a'' é uma instância da ''classe B''? Falso.
 
a = B() # Instancía o ''objeto a'' na ''classe B'' e imprime os atributos da classe.
print isinstance(a, B) # ''Objeto a'' é uma instância da ''classe B''?Verdadeiro.
 
b = B() # Instancía o ''objeto b'' na ''classe B'' e imprime os atributos da classe.
print isinstance(b, B) # ''Objeto b'' é uma instância da ''classe B''? Verdadeiro.
 
b = A() # Instancía o ''objeto b'' na ''classe A''.
print isinstance(b, A) # ''Objeto b'' é uma instância da ''classe A''? Verdadeiro.

entendeu?
depois veremos mais sobre programação de orientação á objetos, classes, objetos, funções e métodos.
ok?
ok!

agora vamos criar uma coisa relativamente simples...

criando tabelas, é uma forma de pensar...

digamos que eu queria comparar o preço do dólar e do real.
assim no python eu vou fazer uma ''tabela comparativa''.
tem como fazer isso na Tkinter do python(Sistema de GUIs do python.)
mas o nosso caso, é um exercício.
para que podemos raciocinar.
esse exercício(acredite) me ajudou muito quando eu começei a programar.
bom digamos que o preço do dólar hoje é:
dolar = 1,685
real = 1,000
eu quero comparalos em uma tabela com tudo que eu sei.
digamos que eu tenho um problema.
vamos converter em real.
podemos fazer isso:
uma tabela!
como?
simples:

considerando:
d = dolar
d = 1.685

f
Código:
or p in range(4,16):  print 'US$ %.2f = R$ %.2f' % (p,p*d)


US$ 4.00 = R$ 6.74
US$ 5.00 = R$ 8.43
US$ 6.00 = R$ 10.12
US$ 7.00 = R$ 11.80
US$ 8.00 = R$ 13.49
US$ 9.00 = R$ 15.17
US$ 10.00 = R$ 16.86
US$ 11.00 = R$ 18.55
US$ 12.00 = R$ 20.23
US$ 13.00 = R$ 21.92
US$ 14.00 = R$ 23.60
US$ 15.00 = R$ 25.29

Código:

>>> for p in range(9,13):
...    print 'US$ %5.2f = R$ %5.2f' % (p, p * d)
...    print '-' * 20 #define que terá a linha ''-----''
...
US$  9.00 = R$ 15.17
--------------------
US$ 10.00 = R$ 16.85
--------------------
US$ 11.00 = R$ 18.54
--------------------
US$ 12.00 = R$ 20.22
--------------------
>>>
vamos entender...
podemos fazer uma tabela assim:
Código:
for p in range(16):
    9* d
    10*d#calculando quanto será 10 dolares em reais
    1*d
vai aparecer o resultado...
   


agora, vamos aprender 2 coisas...
primeiro que se você faz uma coisa muito repetitiva, é por que não encontrou algo mais simples, para tirar isso...
segundo que podemos criar grupos no python.
digite isso:
lista = [1,2,3]
pronto!
agora digita isso:
for p in lista:
2+2

ok?
entendeu agora como podemos usar o for p in... em mais casos?
ok!

bom agora vai o exercício do dia...
tente fazer alguma das tabelas acima que eu mostrei^^
tipo essas:

Código:
for p in range(9,13):
...    print 'US$ %5.2f = R$ %5.2f' % (p, p * d)
...    print '-' * 20 #define que terá a linha ''-----''
...
US$  9.00 = R$ 15.17
--------------------
US$ 10.00 = R$ 16.85
--------------------
US$ 11.00 = R$ 18.54
--------------------
US$ 12.00 = R$ 20.22
--------------------

e coloque aqui, ou mande como comentário...
o melho ganha um premio, e se quiser terá aula comigo de python...
valeu!

proxima aula: entendendo e usando While,not, e outras funções..
atenção, a aula pode ser dia 22/11/2010 ou pode ser daqui uma semana...
mas tentarei divulgar aqui o mais rapido...obriado!

guilhermemig17

Número de Mensagens : 252
Data de inscrição : 03/06/2010
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum