16 Implementações Em Python - PTBR - leandro_costa

Propaganda
Visualização do documento
16 Implementações Em Python.doc
(92 KB) Baixar
1 Hello World
1.1 Testando conteúdo da String
1.1.1 Número
Para testar se uma string contém apenas números usa-se:
>>> print "Hello World!".isalnum()
False
1.1.2 Alfanumérico
Se é alfanumérica:
>>> print "Hello World!".isalpha()
False
1.1.3 Dígito
Dígito:
>>> print "Hello World!".isdigit()
False
1.1.4 Espaço
Se contém apenas espaços, um ou mais.
>>> print "Hello World!".isspace()
False
1.1.5 Minúsculas
Se todos os caracteres estão em minúsculo:
>>> print "Hello World!".islower()
False
1.1.6 Titulo
Se a primeira letra de cada palavra está em maiuscula:
>>> print "Hello World!".istitle()
True
1.1.7 Começa com
Se a string começa com determinado prefixo.
>>> print "Hello World!".startswith( prefix )
False
1.1.8 Termina com
Se a string terminar com determinado sufixo:
>>> print "Hello World!".endswith( sufix )
False
Primos
#!/usr/bin/python
#
# Modulo: primo.py
primo=True
num=raw_input('Escreva um numero: ')
# Converte para inteiro.
num=int(num)
if num == 1:
primo=False
for V in range(2, num-1):
if ((num % V)==0):
primo = False
if primo:
print "O numero %d eh primo." % num
else:
print "O numero %d nao eh primo." % num
Maior elemento
...
...
>>> def maiorElemento(a,b):
... if (a > b):
print "%d maior que %d" % (a,b)
... elif (b > a):
print "%d maior que %d" % (b,a)
... else:
...
print "iguais"
...
>>> maiorElemento(1,2)
2 maior que 1
>>> maiorElemento(5,2)
5 maior que 2
>>> maiorElemento(7,7)
iguais
Sequência de Fibonacci
A sequência de Fibonacci começa com dois números pré definidos, sendo que cada termo
posterior é a soma dos dois anteriores.
>>> def fib(n):
# Imprime a sequência de Fibonacci até n
...
"""Imprime a sequência de Fibonacci até n."""
...
a, b = 0, 1
...
while b < n:
...
print b,
...
a, b = b, a+b
...
>>> # Chama a função:
... fib(100)
1 1 2 3 5 8 13 21 34 55 89
Ano Bissexto
Todos os anos que sejam múltiplos de 4 mas que não sejam múltiplos de 100, com exceção
daqueles que são múltiplos de 400, são bissextos. Em outras palavras, um ano é bissexto se
ele for divisível por 400 ou se ele for divisível por 4 mas não por 100.
...
>>> def isBissexto(ano):
...
if ( (ano % 400 == 0) or
((ano % 4 == 0) and not (ano % 100 == 0)) ):
...
print 'Ano bissexto'
...
else:
...
print 'Ano nao e bissexto'
...
>>> isBissexto(2004)
Ano bissexto
>>> isBissexto(2005)
Ano nao e bissexto
Fatorial
Definimos o fatorial de um numero n (indicado como n!) como sendo:
n! = n * (n - 1) * (n - 2) * .... * 4 * 3 * 2 * 1
...
>>> def fatorial(n):
...
if (n == 0):
...
return 1
...
else:
return n * fatorial(n-1)
...
>>> fatorial (5)
120
>>> fatorial(10)
3628800
Contagem regressiva
Este é um algoritmo simples que apartir de um número inicial, e um intervalo de tempo, faz a
contagem regressiva até 0.
def contagemRegressiva():
import time
import sys
n = int(raw_input ("Qual número você gostaria de
começar
para a contagem regressiva? "))
delay = float(raw_input ("Qual intervalo de tempo entre
a
contagem (segundos)? "))
raw_input ("Iniciando contagem regressiva...")
while n != 0:
print n
n = n-1
time.sleep(delay)
else:
print "Fim da contagem regressiva!"
sys.exit
contagemRegressiva()
Árvore Binária
Conceituação:
Uma árvore binária é um conjunto finito de elementos que está vazio ou é particionado em três
subconjuntos disjuntos. O primeiro subconjunto contém um único elemento chamado raiz da
árvore. Os outros dois subconjuntos são em si mesmos árvores binárias, chamadas subárvores
esquerda e direita da árvore original. Uma subárvore esquerda ou direita pode estar vazia. Cada
elemento de uma árvore binária é chamado nó da árvore.
", Pg: 303, Estruturas de dados
usando C, Makron Books.
Para implementar o algoritimo de árvore binária em python podemos utilizar diversas estruturas
de dados, lista, tupla, dicionários e pode-se até criar um tipo árvore binária, com métodos para
representação como string, iteração, comparação de árvores entre outros, além dos métodos
inerentes a árvores. No caso do nosso curso vamos criar uma classe árvore.
Implementação:
#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*class Arvore:
"""
Classe de tratamento de arvore binaria.
O algoritimo de arvore de pesquisa binária foi usado para este exemplo.
"Uma árvore binária é um conjunto finito de elementos que está
vazio ou é
particionado em três subconjuntos disjuntos. O primeiro subconjunto
contém
um único elemento chamado raiz da árvore. Os outros dois subconjuntos são
em
si mesmos árvores binárias, chamadas subárvores esquerda e direita da
árvore
original. Uma subárvore esquerda ou direita pode estar vazia. Cada
elemento
de uma árvore binária é chamado nó da árvore.", Pg: 303, Estruturas de
dados
usando C, Makron Books.
Os principais conceitos que devem ficar claros para a compreensão do
algoritimo
são: Nós, cada elemento da árvore é um nó, inclusive o primeiro, chamado
de
raiz. Raiz é o elemento inicial da árvore, como todo nó, tem um valor, um
filho
esquerdo e um filho direito, os filhos também são nós. Filho é um nó
qualquer
que não o raiz, o nó raiz é o único que não tem pai. Os nós que não tem
filhos
são chamados de folha da árvore. Nós que tem o mesmo pai são irmãos. Um
nó
(n1) é ancestral de outro(n2) se n1 é pai de n2 ou se n2 estiver em sua
árvore
esquerda ou direita. Da mesma forma n2 seria descendente de n1. O nó raiz
é
ancestral de todos e todos são descendentes da raiz. A árvore tem altura
que
é mais fácil de explicar com um exemplo:
Nível 0:----->
Nível 1:----->
Nível 2:----->
4
2
1
3 5
7
15
A altura é 2, pois a definição da altura de árvore diz que é a distância
entre a raiz e seu nó folha, a profundidade da árvore. O elemento 3 está
no
nível 2, assim como os elementos 1, 5, 15.
Nossa classe herda da classe "list" pois "list" é um dos tipos que
representam
conjuntos, o python também tem tuplas(tuple) e dicionários(dict), nossa
classe
baseia-se em lista.
Referencia:
:version:
:author: Ramiro Batista da Luz
"""
def __init__(self,valor, arv_esq=None, arv_dir=None):
"""
Metodo inicial. Se o parâmetro lista não for fornecido será utilizado
o
padrão para o parâmetro, uma lista vazia.
@since
@author
"""
self.valor = valor
self.arv_esq = arv_esq
self.arv_dir = arv_dir
def __repr__(self,nivel=0,indent="
"):
"""
show mostra a arvore em uma representação textual como no exemplo:
02
34
23
12
04
03
35
45
"""
# Inicializa a raiz da árvore (ou sub-árvoren no caso das chamadas a
# seguir).
s = [nivel*indent + '%.2d' % self.valor]
# Se a árvore esquerda não estiver vazia, adiciona na lista a
# representação da árvore esquerda.
if self.arv_esq:
s.append(self.arv_esq.__repr__(nivel+1, indent))
# Se a árvore direita não estiver vazia, adiciona na lista a
# representação da árvore direita.
if self.arv_dir:
s.append(self.arv_dir.__repr__(nivel+1, indent))
# Junta os elementos da lista com a string \n(final de linha).
# Retorna uma string.
s = "\n".join(s)
return s
def imprime(self):
"""
Imprime a árvore.
"""
print self.__repr__()
# Um "generator" recursivo que mostra os valores da árvore em "in-order".
def inordem(arv):
if arv:
for x in inordem(arv.arv_esq):
yield x
yield arv.valor
for x in inordem(arv.arv_dir):
yield x
def arvore(lista):
"""
Insere no na arvore fazendo um caminho recursivo.
@param
: valor, é o conteúdo do nó e arv é a árvore onde o valor deve
ser inserido.
@return : Retorna um novo nó, que é uma lista. O elemento 0 é o valor do
nó. O elemento 1 é a árvore esquerda. O elemento 2 é a árvore direita.
@since
@author
"""
# Se a lista contiver pelo menos um elemento.
if lista:
# Se a lista contiver exatamente um elemento retorna um nó folha.
if len(lista)==1:
return Arvore(lista[0])
else:
# Senão, retorna uma árvore com o valor da raiz e a chamada
recursiva
# da função que transforma uma lista em árvore, uma vez para com
os
# elementos menores que a raiz e uma com os elementos maiores que
a
# raiz.
raiz=lista[0]
return Arvore(raiz, arvore(filter(lambda i,r=raiz: i<r,
lista[1:])), arvore(filter(lambda i,r=raiz: i>=r, lista[1:])))
else:
# Senão, a lista está vazia então retorna o valor Nulo.
return None
def teste():
colunas = 40
lista = [2,34,23,12,35,45,4,3]
#lista.sort()
a_arv = arvore(lista)
print "-"*colunas
print "Altura %d" % altura(a_arv)
if busca(2,a_arv):
print "-"*colunas
print "Valor encontrado %d" % 2
print a_arv.imprime()
else:
print "-"*colunas
print "Valor não encontrado %d" % 2
print "[]"
print "-"*colunas
print a_arv
for i in inordem(a_arv):
print i
# Calcula o nível de um nó numa Árvore.
def nivel_no(arv,valor,nivel=0):
"""
Nivel de um nó na árvore. O parametro valor é o conteúdo do nó. O
parametro nível é por padrão 0, o nó raiz. O parâmetro arv é usado para
pesquisa. Usando o valor zero faz a pesquisa à partir da raiz da árvore.
@param
: valor, arv, nivel
@return : Nível do nó.
@since
@author
"""
n=nivel+1
# Se a árvore existir e não for vazia vai calculando, senão retorna -1
pois
# chegou ao fim da árvore(folha).
if arv:
# Se o conteúdo do nó raiz da árvore onde estamos procurando é igual
# a chave, então encontramos o valor desejado. Agora calculamos a
# altura da árvore onde esse nó é raiz e a árvore.
if arv.valor == valor:
return n-1
else:
# Se o conteúdo do nó raiz da árvore é maior que a chave, então
# continuamos a pesquisa pela sub-árvore direita. Senão devemos
# pesquisar a sub-árvore esquerda.
if arv.valor > valor:
#Lado esquerdo
return nivel_no(arv.arv_esq,valor,n)
else:
#Lado direito
return nivel_no(arv.arv_dir,valor,n)
else:
return -1
def busca(chave,arv):
"""
Busca recursiva na arvore. O parametro chave é o valor que se procura, o
parametro arv é a estrutura onde iremos procurar.
@param
: chave, arv
@return : Verdadeiro ou falso.
@since
@author
""...
Arquivo da conta:
leandro_costa
Outros arquivos desta pasta:



 03 Aprendendo Python.pdf (20865 KB)
09 Aprenda Computação Com Python.pdf (1505 KB)
02 Python Para Desenvolvedores 1° ed.pdf (3386 KB)
05 Módulo A - Bem-Vindo A Python!.pdf (609 KB)
 07 Módulo C - Tkinter.pdf (1122 KB)
Outros arquivos desta conta:


Books
Doc
Relatar se os regulamentos foram violados








Página inicial
Contacta-nos
Ajuda
Opções
Termos e condições
Política de privacidade
Reportar abuso
Copyright © 2012 Minhateca.com.br
Download