You are on page 1of 34

Inteligência Artificial

Aula 7 Profª Bianca Zadrozny http://www.ic.uff.br/~bianca/ia

Características de Python
• Gratuita. Roda em muitas plataformas.
– Pode ser baixada em www.python.org

• Fácil de ler.
– Ao contrário de Perl = “write only language”

• Tempo de implementação rápido.
– Ao contrário de Java.

• Orientada a objeto.

Aula 7 - 01/09/2010

2

Baixando e Instalando
• Baixar o Python 2.7 no site www.python.org
– Para o Windows baixar o Python 2.7 Windows installer e instalar usando as opções default.

• Além do interpretador, será instalada uma IDE (IDLE).

Aula 7 - 01/09/2010

3

Operadores • O interpretador de Python pode ser usado para avaliar expressões aritméticas. >>> 1 + 1 2 >>> 2 * 3 6 • Operadores booleanos podem ser usados para manipular os valores True e False. >>> 1==0 False >>> not (1==0) True >>> (2==2) and (2==3) False >>> (2==2) or (2==3) True Aula 7 .01/09/2010 4 .

Strings • Como Java. O operador + pode ser usado para concatenação. Aula 7 .upper() 'ARTIFICIAL' >>> 'HELP'.01/09/2010 5 . >>> 'artificial'. facilitando o aninhamento de strings. >>> 'inteligencia' + "artificial" 'inteligenciaartificial' • Existem muitos métodos para manipular strings. Python tem um tipo string definido na própria linguagem.lower() 'help' >>> len('Help') 4 • Podemos usar aspas simples ou duplas.

upper()) 11 >>> num = 8. >>> s = 'hello world' >>> print s hello world >>> s.5 Aula 7 . simplesmente atribuímos valores a um nome e a variável com aquele nome passa a existir.01/09/2010 6 .Variáveis • Em Python não existe declaração de variáveis.0 >>> num += 2.5 >>> print num 10.upper() 'HELLO WORLD' >>> len(s.

'__new__'. 'ljust'. 'expandtabs'. 'endswith'. '__lt__'. '__doc__'. 'islower'. '__mod__'.. 'capitalize'. '__init__'. '__len__'. '__hash__'. 'split'. 'title'.start [. 'find'. 'replace'.'__repr__'. 'encode'. '__mul__'. '__class__'. 'decode'.Comandos de ajuda • Para descobrir os métodos para um determinado tipo. '__reduce_ex__'. podemos usar os comandos dir e help. 'rsplit'. 'center'. 'rfind'. 'join'. 'count'. 'rstrip'. such that sub is contained within s[start. 'lower'. '__str__'.01/09/2010 7 . '__rmul__'.find) Help on built-in function find: find(.) S. '__getitem__'. 'strip'. '__contains__'. '__getattribute__'.'__le__'. '__getslice__'. '__getnewargs__'. 'upper'. 'isalpha'. 'index'. '__ge__'. 'isalnum'. 'splitlines'. '__delattr__'. 'rjust'. Return -1 on failure. '__setattr__'. '__ne__'. 'lstrip'. 'startswith'. Optional arguments start and end are interpreted as in slice notation. 'translate'. >>> s = 'abc' >>> dir(s) ['__add__'.'rindex'. 'isdigit'. '__gt__'. >> s. '__rmod__'.end]]) -> int Return the lowest index in S where substring sub is found.. '__eq__'. 'istitle'.find('b') 1 Aula 7 . 'isupper'.find(sub [. 'swapcase'.end]. '__reduce__'. 'zfill'] >>> help(s. 'isspace'.

'banana'] Aula 7 .Listas • É uma estrutura de dados própria da linguagem para guardar sequências de itens. 'abacaxi'.01/09/2010 8 .'banana'] >>> frutas[0] 'laranja' >>> frutas[1]= 'abacaxi‘ >>> frutas ['laranja'. • É mutável. isto é.'pera'. >>> frutas = ['laranja'. podemos modificar elementos da lista individualmente.

pop() 'banana' >>> frutas ['laranja'.) • Podemos usar o operador + para concatenação de listas. 'banana'. 'abacaxi'] >>> frutas. >>> outrasFrutas = ['kiwi'. 'abacaxi'.01/09/2010 9 . 'morango'] >>> frutas + outrasFrutas >>> ['laranja'.Listas (cont. 'ameixa'] Aula 7 . 'abacaxi'.append('ameixa') >>> frutas ['laranja'. 'morango'] • Podemos usar índices negativos a partir do final da lista. >>> frutas[-2] ‘abacaxi' >>> frutas.'kiwi'.

Indexação e Quebra Aula 7 .03/04/2009 .

'abacaxi'. 'abacaxi'] >>> frutas[:3] ['laranja'. 'ameixa']] >>> len(frutas) 3 Aula 7 . >>> frutas[0:2] ['laranja'.01/09/2010 11 .Listas (cont. 'ameixa'] >>> frutas[1:] ['abacaxi'.) • Podemos indexar pedaços de listas.

'dois'.Listas (cont.['um'. 'tres']] Aula 7 .'c'].3]. 'b'].'tres']] >>> listaDeListas[1][2] 3 >>> listaDeListas[0].'b'.[1.[1.['um'. inclusive outras listas. 2. >>> listaDeListas = [['a'.2. 'dois'. 3].01/09/2010 12 .pop() 'c' >>> listaDeListas [['a'.) • Listas podem conter elementos de qualquer tipo.

Tuplas • Tuplas são estruturas similares a listas. >>> par = (3.y = par >>> x 3 >>> y 5 >>> par[1] = 6 TypeError: object does not support item assignment Aula 7 .01/09/2010 13 .5) >>> par[0] 3 >>> x. • Usa-se parênteses ao invés de colchetes. exceto que são imutáveis.

add('polygon') >>> setOfShapes set(['circle'.01/09/2010 14 .'polygon'.'triangle']) >>> setOfShapes | setOfFavoriteShapes set(['circle'.'triangle'.'triangle'.'square'.'polygon']) >>> 'circle' in setOfShapes True >>> 'rhombus' in setOfShapes False >>> favoriteShapes = ['circle'.'circle'] >>> setOfShapes = set(shapes) >>> setOfShapes set(['circle'.'triangle'.'triangle']) >>> setOfShapes.'triangle'. >>> shapes = ['circle'.'hexagon']) Aula 7 .'square'.'square'.'square'.setOfFavoriteShapes set(['square'.'polyon']) >>> setOfShapes & setOfFavoriteShapes set(['circle'.Conjuntos • Conjuntos são estruturas de dados que armazenam listas não-ordenadas sem duplicatas.'hexagon'] >>> setOfFavoriteShapes = set(favoriteShapes) >>> setOfShapes .

01/09/2010 15 . não por posição. • São mutáveis como as listas. Aula 7 . • São coleções não-ordenadas de objetos arbitrários. – Podem ser vistos como uma coleção de pares chave:valor. inclusive outros dicionários. • Tem tamanho variável e podem conter objetos de qualquer tipo.Dicionários • Dicionários são endereçados por chave.

01/09/2010 16 .Dicionários (cont.) Aula 7 .

03/04/2009 . 0. • A indentação ajuda na legibilidade do código. • Expressões depois do if e elif podem ser de quase qualquer tipo.Execução Condicional • A indentação determina a estrutura do bloco. *+. – False. – É o único lugar onde o espaço em branco importa. (). ‘’ funcionam como falso. Aula 7 . o resto é verdadeiro.

Laços “While” • Um laço do tipo “while” continua enquanto a expressão no topo for verdadeira.03/04/2009 . Aula 7 .

Aula 7 .Laços “For” • “For” é usado pra percorrer uma seqüência qualquer de objetos.03/04/2009 . • O uso de “range” pode ser útil.

Aula 7 .Laços “For” • Fazer alguma coisa com cada item de uma lista.03/04/2009 .

03/04/2009 .Exemplo: Interseção Aula 7 .

03/04/2009 .Funções “built-in”. importadas e definidas pelo usuário • “Built-in” • Importadas • Definidas pelo usuário Aula 7 .

Aula 7 .Definição de funções • Def cria um objeto do tipo função e dá um nome a ele. • Return retorna um objeto a quem chamou a função.03/04/2009 .

Exemplo Aula 7 .03/04/2009 .

03/04/2009 . Aula 7 .Variáveis locais • Variáveis dentro de uma função são locais àquela função.

Passagem de Parâmetros • Objetos imutáveis são passados “por valor”. Aula 7 .03/04/2009 .

03/04/2009 . Aula 7 . strings e tuplas são imutáveis enquanto listas e dicionários são mutáveis. • Objetos mutáveis são passados “por referência”.Passando parâmetros mutáveis • Números.

03/04/2009 .Número variável de parâmetros Aula 7 .

03/04/2009 .Parâmetros opcionais Aula 7 .

Múltiplos parâmetros opcionais Aula 7 .03/04/2009 .

03/04/2009 . Aula 7 .Número arbitrário de parâmetros opcionais • A notação ** recebe todos os parâmetros extra em um dicionário.

Definição de Classes Aula 7 .01/09/2010 32 .

Usando objetos • Supõe-se que a definição das classes está no arquivo shop.py. Aula 7 .01/09/2010 33 .

01/09/2010 34 .Variáveis Estáticas person_class.py Aula 7 .