Inteligência Artificial
Introdução a Programação em Python
Docentes: Ruben Manhiça
Maputo, 26 de janeiro de 2022
INSTITUTO SUPERIOR DE CIENCIAS E TECNOLOGIA
DE MOÇAMBIQUE
Escola Superior de Informática
Licenciaturaem Engenharia Informática
Conteúdo da Aula
1.ProgramaçãoemPython
1/26/2022 Notas da aula de Inteligencia Artificial 1 2
A Linguagem Python
•Python foi criado idealizado na década
de 80 e sua implementação começou
em 1989, por Guido van Rossum
–2000: Python 2
–2008: Python 3
•Características da linguagem:
–Multiparadigma(estruturado, orientado a
objetos, funcional e orientado a aspectos)
–Multiplataforma (Windows, Linux, iOS, etc.)
–Interpretada
–Tipagem dinâmica
–Gerência de memória automatizada
(coletor de lixo)
1/26/2022 Notas da aula de Inteligencia Artificial 1 3
Guido van Rossum,
o criador do Python
O Ambiente de Desenvolvimento
•Ambiente de desenvolvimento de software Python
–Usaremos Python 3.10
•O ambiente de desenvolvimento Python inclui:
–Um amplo conjunto de Interfaces de Programação de
Aplicações
(APIs, do inglês “ApplicationProgrammingInterfaces”)
–Ferramentas de compilação e depuração de código
•Python 3 não é um Ambiente Integrado de Desenvolvimento
(IDE, do inglês “IntegratedDevelopmentEnvironment”)
–A linguagem Python por si só não oferece editores de código
ou ambiente de programação
–Usaremos PyCharmcomo IDE
(editor + ambiente de programação)
1/26/2022 Notas da aula de Inteligencia Artificial 1 4
5
Instalação do Python 3.10
(https://www.python.org)
e
do PyCharm
(https://www.jetbrains.com/pycharm)
1/26/2022 Notas da aula de Inteligencia Artificial 1
Por ondecomeçamos?
1/26/2022 Notas da aula de Inteligencia Artificial 1 6
... CriandonossoprimeiroHello World !
HelloWorld
1/26/2022 Notas da aula de Inteligencia Artificial 1 7
... ‘hello world’ -Python X {Pascal, Java, C, PHP}
... em Python...
1/26/2022 Notas da aula de Inteligencia Artificial 1 8
print“Hello World”
Tipos e operações
Vamosverum trechode códigoemPython!
Notas da aula de Inteligencia Artificial 11/26/2022 9
Código Base
1/26/2022 Notas da aula de Inteligencia Artificial 1 10
... entendendo o código...
Atribuiçãoutiliza=e comparaçãoutiliza==
1/26/2022 Notas da aula de Inteligencia Artificial 1 11
... entendendo o código...
Atribuiçãoutiliza=e comparaçãoutiliza==
1/26/2022 Notas da aula de Inteligencia Artificial 1 12
... entendendoo código...
Números: + -* / % tem suas funções características
+pode ser usado como concatenação de Strings;
%pode ser usado para formatar Strings(assim como em C).
1/26/2022 Notas da aula de Inteligencia Artificial 1 13
... entendendoo código...
Números: + -* / % tem suas funções características
+pode ser usado como concatenação de Strings;
%pode ser usado para formatar Strings(assim como em C).
1/26/2022 Notas da aula de Inteligencia Artificial 1 14
... entendendo o código...
Operadores lógicos são palavras e não símbolos (||, &&)
and, or, not
1/26/2022 Notas da aula de Inteligencia Artificial 1 15
... entendendo o código...
Operadores lógicos são palavras e não símbolos (||, &&)
and, or, not
1/26/2022 Notas da aula de Inteligencia Artificial 1 16
... entendendo o código...
printé o comando básico para “impressão” na tela
1/26/2022 Notas da aula de Inteligencia Artificial 1 17
... entendendo o código...
printé o comandobásicopara “impressão” natela
1/26/2022 Notas da aula de Inteligencia Artificial 1 18
... entendendo o código...
E se você quiser receber uma entrada diretamente do
usuário ?
raw_input() -retorna uma string!
>>> raw_input(‘Digite um valor’)
1/26/2022 Notas da aula de Inteligencia Artificial 1 19
... entendendo o código...
A primeira atribuição em uma variável também é
responsável por cria-lá.
Os tipos das variáveis não precisam ser informados;
Pythondescobre o tipo da variável por conta própria!
1/26/2022 Notas da aula de Inteligencia Artificial 1 20
... entendendo o código...
A primeira atribuição em uma variável também é
responsável por cria-lá.
Os tipos das variáveis não precisam ser informados;
Pythondescobre o tipo da variável por conta própria!
1/26/2022 Notas da aula de Inteligencia Artificial 1 21
... Usandoo Shell
1/26/2022 Notas da aula de Inteligencia Artificial 1 22
... Usando o Shell
1/26/2022 Notas da aula de Inteligencia Artificial 1 23
... Usando o Shell
1/26/2022 Notas da aula de Inteligencia Artificial 1 24
Whitespace
Importante para identaçãoe novas linhas
Use \para quando for para uma próxima linha prematuramente.
Em Pythonnão há { } !! Isso é para definição de
dicionários (dict)
Blocos de código definidos por identação!
1/26/2022 Notas da aula de Inteligencia Artificial 1 25
Comentários
Comentários começam com #
Convenção: Você pode definir uma “documentação” em stringcomo
primeira linha de qualquer nova função que você definir.
Muito importante para o desenvolvedor, crítico para o usuário!
1/26/2022 Notas da aula de Inteligencia Artificial 1 26
Conhecendo a linguagem...
1/26/2022 Notas da aula de Inteligencia Artificial 1 27
Conhecendo a linguagem...
1/26/2022 Notas da aula de Inteligencia Artificial 1 28
Tipos Básicos
Inteiros(padrãopara números)
Divisãoentre inteiros, respostaum inteiro!
InteirosLongos
L oul no final. (Convertidoautomaticamentecom precisãode inteiros> 32
bits)
Floats (pontoflutuante)
1.23, 3.4e-10
Complexas
>> 2 + 3j
Operaçõesválidas: +, *, >> , ** , pow, abs, etc.
1/26/2022 Notas da aula de Inteligencia Artificial 1 29
Representaçãonumérica
Representaçãode dígitoscom/semformataçãode string
Divisãoclássica/ base
Usodos operadores// e /
Operaçõesemnívelde bit
1 << 2 , 1| 2 , 1&2
Notaçõeshexadecimal / octal
2 , 0x10 , 0100 , oct(64), hex(255) , int(‘200’), int(‘0100’,8) , int(‘0x40’,16)
Operaçõesválidas: +, *, >> , ** , pow, abs, round, etc.
Tipos Básicos
Notas da aula de Inteligencia Artificial 11/26/2022 30
Tipos Básicos
Notas da aula de Inteligencia Artificial 11/26/2022 31
Tipos Básicos
Strings
“abc” ou ‘abc’
Operadores de expressão de Pythone sua precedência
http://docs.python.org/reference/expressions.html#summary
1/26/2022 Notas da aula de Inteligencia Artificial 1 32
Comandosbásicos
Alguns comandos básicos que podem ajudar no inicio!
dir(element) -todos os atributos e métodos que estão associados a elemento.
type(element)-Descobrir o tipo do objeto!
import-importe módulos para uso no seu código!
1/26/2022 Notas da aula de Inteligencia Artificial 1 33
Atribuição
... Vamosentendercomofuncionaatribuição!
1/26/2022 Notas da aula de Inteligencia Artificial 1 34
Atribuição de uma variável em Pythonsignifica criar um rótulo
para armazenar uma referência para algum objeto.
Atribuição cria referências e não cópias!
Inferência do tipo da referência baseado no tipo de dado atribuído
A referência é deletada por meio de GarbageCollection
Quando o objeto deixa de ser referenciado por nenhum outro rótulo(variável).
Atribuição
1/26/2022 Notas da aula de Inteligencia Artificial 1 35
Atribuição
Lembre-se que Pythona tipagemé dinâmica!
Declarar variáveis sem atribuí-las irá levantar um erro!
1/26/2022 Notas da aula de Inteligencia Artificial 1 36
Atribuição
Você pode inicializar várias variáveis de uma só vez!
x = y = z = 2.0
Rótulos de variáveis são Case Sensitivee não podem iniciar com
número. Números, letras e underscoressão permitidos!
bob bob_2 _bob _2_bob bob_2 BoB
Não esquecer das palavras reservadas!
1/26/2022 Notas da aula de Inteligencia Artificial 1 37
Atribuição
Entendendo manipulação de atribuição de referências
x = y não significa que você fez uma cópia de y!
x = y o que realmente faz é x referencia ao objeto que y referencia!
O que realmente acontece por trás dessa simples atribuição:
1/26/2022 Notas da aula de Inteligencia Artificial 1 38
Atribuição
Mas e se fizermos isso ?! Qual será o valor de x ?
>>>x = “casa”
>>>y = x
>>>x = “fazenda”
>>>printx
1/26/2022 Notas da aula de Inteligencia Artificial 1 39
Atribuição
Mas e se fizermos isso ?! Qual será o valor de x ?
Do mesmo jeito que nós esperávamos! Dados nativos são
imutáveis! (String, Inteiros, float, complexos).
>>>x = “casa”
>>>y = x
>>>y = “fazenda”
>>>printx
>>>x = “casa” #cria 3, x referencia ao objeto string “casa”
>>>y = x # Cria variavel y, referencia ao objeto string “casa”
>>>y = “fazenda” #Cria referencia ao objeto string “fazenda”
>>>printx # Nenhum efeito em x, ainda referencia “casa”
>>>casa
1/26/2022 Notas da aula de Inteligencia Artificial 1 40
Listas, Strings e Tuplas
... O poderde python agora!
1/26/2022 Notas da aula de Inteligencia Artificial 1 41
Listas, Strings e Tuplas
Todos os três são Sequências!
Podem ser indexados por algum valor ordinal posicional
Todas as operações apresentadas aqui nesta seção podem ser aplicadas em
todos os tipos de sequência
Listas
li = [1,2,3, ‘abc’]
Tuplas
li = (23, ‘abc’, 4.56, (2,3), ‘def’)
Strings
st = “HelloWorld” st = ‘HelloWorld’
1/26/2022 Notas da aula de Inteligencia Artificial 1 42
Listas, Strings e Tuplas
Manipulandosequências!
Peloíndicea partirde 0 Ex: ti[0]
Índicespodemser positivosounegativos! Ex: ti[1] (esq.) ti[-4] (dir.)
Fracionamentoe matrizes!
li[1:3] L[1:] matrix = [[1,3,4] , [3,5,6] , [7,8,9]]
Operadorin
retornaum booleano. Checase um valor estáemumasequência!
4 in li
1/26/2022 Notas da aula de Inteligencia Artificial 1 43
Listas, Strings e Tuplas
1/26/2022 Notas da aula de Inteligencia Artificial 1 44
Operacões em Listas
Operador + , *
a = “Hello” + “ World” (concatenação)
[3] * 4 (repetição)
Operador len() e append()
len() -retorna um inteiro com o tamanho da sequência!
pop() -retira o último elemento da lista (conceito de pilhas!)
append() -adiciona um elemento ao final da lista!
Atribuição
list[0] = ‘3’
Fazendo cópias de sequência , Cuidado!!!
1/26/2022 Notas da aula de Inteligencia Artificial 1 45
OperacõesemListas
Qual seráo valor de b ?
>>>a = [1,2,3]
>>>b = a
>>>a.append(4)
>>>printb
1/26/2022 Notas da aula de Inteligencia Artificial 1 46
OperacõesemListas
Qual seráo valor de b ?
Surpresa!
Dados do tipolistas, dicionariose pré-definidospelousuáriosão
mutáveis!
>>>a = [1,2,3]
>>>b = a
>>>a.append(4)
>>>printb
>>>b = [1,2,3,4]
1/26/2022 Notas da aula de Inteligencia Artificial 1 47
Operacões em Listas
1/26/2022 Notas da aula de Inteligencia Artificial 1 48
Operacões em Listas
Para fazer cópias de listas
a = b[:] (2 cópias independentes)
a = b (os 2 referenciam o mesmo objeto)
Qual a diferença entre listas e tuplas ?
Listas são mutáveis e Tuplas imutáveis!
l = [1,‘abc’,4] t = (1,‘abc’,4,5)
Atribuição em listas e tuplas
list[0] = ‘3‘ ok!
t[0] = 3 NOK!!! (Deve-se criar uma nova tupla! -t = (3, ‘abc’,4,5)
1/26/2022 Notas da aula de Inteligencia Artificial 1 49
Tuplasx Listas
Listassãomaislentasporémmaispoderosasque tuplas
Listaspodemser modificadase temdiversosoperadoresque podemser
utilizados
Tuplassãoimutáveise temmenosfuncionalidades!
Para converter entre listase tuplas?
•li = list(t)
•t = tuple(li)
1/26/2022 Notas da aula de Inteligencia Artificial 1 50
Métodos muito usados
•append(), insert(), extend(), del()
•index(), count(), remove(), pop()
•reverse() , sort()
•etc.
1/26/2022 Notas da aula de Inteligencia Artificial 1 51
Strings
•Formataçãoe conversãode Strings
•Usamosmesmosoperadoresbásicosde lista
•Multi-Strings, Strings com aspassimples e duplas
•CaracteresSpeciaise str() e unicode()
1/26/2022 Notas da aula de Inteligencia Artificial 1 52
Strings
Também uma sequência e é Imutável!
“42” + 1 (erro!) Use “42” + str(1)
float(), int() -> stringpara numéro
Atribuição
S = ‘spam’ S[0] = ‘x’ ERRO!!!
Stringssão imutáveis!
String-> Lista -> String(.join)
Formatação de string
1/26/2022 Notas da aula de Inteligencia Artificial 1 53
Dicionários
Um “hash map” pythonico!
Notas da aula de Inteligencia Artificial 11/26/2022 55
Dicionários
Estruturade dados emforma de coleçõesondeositems são
armazenadose buscadospela chaveemvezdo deslocamento
posicional.
Chaves podemser quaisquerobjetosdo tipoimutável
Valorespodemser de qualquertipo
Um dicionáriopodearmazenardiferentestiposde valorese é mutável!
Criandoe modificandodicionários!
d = {“user” : “Marcel” , “password”: 2342}
1/26/2022 Notas da aula de Inteligencia Artificial 1 56
Dicionários
Dicionáriosnãosãoordenados!
Uma nova chavepodeapareceremqualquerrlugar
Funcionacomo“hashing”
Algumsmétodos:
has_key(‘eggs’) , clear() , del d[‘key’] , keys(), values(), items(), get() , update()
copy() fazercópiasde dicionários! (Lembre-se que dicionarioé mutável!)
1/26/2022 Notas da aula de Inteligencia Artificial 1 57
Arquivos
Como é fácilmanipular um arquivo!
1/26/2022 Notas da aula de Inteligencia Artificial 1 58
Arquivos
•Apenas uma linha para abrir um arquivo!
•file = open(“data”, ‘r’) tipos: r, a, w
•Alguns métodos para operações em arquivos:
•file.read(), readline(), readlines(),
•file.write(), writelines(),
•file.close()
1/26/2022 Notas da aula de Inteligencia Artificial 1 59
Booleanos
Expressões lógicas
Notas da aula de Inteligencia Artificial 11/26/2022 60
Expressõeslógicas
•Truee False são constantes em Python
•False : 0, None, [] , {} , 0.0
•True: Valores Numéricos exceto 0, objeto não vazios
•Um dicionário pode armazenar diferentes tipos de valores e é mutável!
•Operadores de comparação: ==, != , < , <=, etc.
•X == Y ( efetua teste de equivalência de valor)
•X isY (Testa a identidade do objeto)
1/26/2022 Notas da aula de Inteligencia Artificial 1 61
Expressõeslógicas
None é similar aoNULL emlinguagemC
L = [None] * 100 (declaraumalistade 100 items None )
Operaçõescom or e and
not -> inversãológica(true -> false , false -> true)
and e or (&& e II)
**Casos especiais: Eleretornao valor de umadas sub-expressões!
isinstance(element,type)
Verificase um elementoé do tipotype
Notas da aula de Inteligencia Artificial 11/26/2022 62
Instruçõescompostas
If python == “cool”:
print “Oh yeah!”
Notas da aula de Inteligencia Artificial 11/26/2022 63
Fluxode Controle
VáriasexpressõesPython para controlaro fluxodo programa.
Todoselesfazemusode testes condicionaisbooleanos.
ifs, else
loops while, for
assert
1/26/2022 Notas da aula de Inteligencia Artificial 1 64
Instruções if
Não esqueçam da indentação em blocos!
E do (:) após a expressão booleana!
1/26/2022 Notas da aula de Inteligencia Artificial 1 65
Instruçõesif
1/26/2022 Notas da aula de Inteligencia Artificial 1 66
Instruçãoassert
O usode assert permiteverificarse algo é verdadeirodurantea
execuçãodo programa.
Se a condiçãofor falsa, o programaé interrompido.
assert(number_of_players< 5)
1/26/2022 Notas da aula de Inteligencia Artificial 1 67
Instruçõeswhile
Você pode usar o comando breakpara sair do loopmais próximo que a
envolve.
Você pode usar o comando continuepara pular para o íniciodo loopmais
próximo que a envolve e pular para a próxima iteração.
Você pode usar o comando passquando você não quer que se faça nada
(instrução vazia)
Você pode usar o bloco elsedo looppara quando se quer executar um
código quando se sai normalmente do loop(sem ser por comando break)
1/26/2022 Notas da aula de Inteligencia Artificial 1 68
Instruçõeswhile
1/26/2022 Notas da aula de Inteligencia Artificial 1 69
Instruções for
Loopsfor iteram sobre uma sequência de items(listas, tuplas, stringou
quaisquer outros objetos cuja a linguagem considere como um “iterator”)
Várias maneiras de iterar sobre um conjunto de items!
Também possui o bloco elsequando se sai normalmente do loop(similar
ao while)
Função muito usada nos loopsfor: range()
range() -Retorna uma lista de números que varia de 0 a ao número passado como
parâmetro.
xrange() -Retorna uma lista como range() só que libera o item quando for
requisitado! Mais eficiente, porém apenas com itemsdo mesmo tipo e sem suporte
à slicing, repetição e concatenação.
1/26/2022 Notas da aula de Inteligencia Artificial 1 70
Instruçõesfor
1/26/2022 Notas da aula de Inteligencia Artificial 1 71
Instruçãozip
zip() é bastantepoderoso, podeunirsequênciasonderetornauma
listade tuplasque se distribuemempares ositems paralelos
extraídosdessas sequências.
Permitetambémfacilitara construçãode dícionarios!
x = dict(zip(kes,vals))
1/26/2022 Notas da aula de Inteligencia Artificial 1 72
Compreensão de listas
[i for i in “python é fácil demais”]
1/26/2022 Notas da aula de Inteligencia Artificial 1 73
Compreensão de listas
Funcionalidade muito poderosa da linguagem Python
Gera uma lista nova aplicando uma função para cada elemento da lista original.
Muito usado por programadores Python! (Economia de código!)
A sintaxe da compreensão de lista usa-se de palavra-chaves:
[expressionfor namein list]
1/26/2022 Notas da aula de Inteligencia Artificial 1 74
Compreensão de listas
Permitetambémousodefiltros(deteminamseumadetermina
expressãodeveserexecutadasobreummembrodalista)
[expressionfor namein listiffilter]
1/26/2022 Notas da aula de Inteligencia Artificial 1 75
Compreensãode listas
Vocêtambémpodeaninharcompreensãodelistas!
[expressionfor namein [expressionfor namein list]]
1/26/2022 Notas da aula de Inteligencia Artificial 1 76
Python é muitopoderoso!
Nãoprecisareinventararoda!Molde-aparaadaptaraoseu
problema!
AdocumentaçãodePythonébastantevastaehámuitas
funcionalidadesprontas!
Notas da aula de Inteligencia Artificial 11/26/2022 77
TPC
1/26/2022 Notas da aula de Inteligencia Artificial 1 78
Exercícios01
Notas da aula de Inteligencia Artificial 11/26/2022 79
Exercícios02
1/26/2022 Notas da aula de Inteligencia Artificial 1 80