9. IA 1 - Introdução a programação em Python.pdf

MilvaNnMarluZz 81 views 81 slides Jul 20, 2022
Slide 1
Slide 1 of 81
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81

About This Presentation

Inteligencia artificial


Slide Content

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

Métodosmaisusados
•find(), replace(), join(), split()
•isdigit(), islower(), strip(),
•startswith(), upper(), lower()
•etc.
1/26/2022 Notas da aula de Inteligencia Artificial 1 54

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

FIM!!!
Duvidas e Questões?
Tags