2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção...
Transcript of 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção...
ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B
2 - Variáveis2 - Variáveis2 - Variáveis2 - Variáveis2 - Variáveis2 - Variáveis2 - Variáveis2 - Variáveis2 - Variáveis
Ludwig Krippahl
1
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Resumo■ Objectos e tipos de valores em Python■ Variáveis: criação e utilização■ Operações com valores e variáveis■ Exemplos: cálculos usando variáveis
2
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Objectos e ConstantesObjectos e ConstantesObjectos e ConstantesObjectos e ConstantesObjectos e ConstantesObjectos e ConstantesObjectos e ConstantesObjectos e ConstantesObjectos e Constantes
3
ObjectosObjectosObjectosObjectosObjectosObjectosObjectosObjectosObjectos
Todos os valores em Python são objectos■ Um objecto é uma combinação de dados e código que os processa• Um objecto é como um mini-programa
■ Exemplo: a constante numérica 2■ A função dir lista os
métodos de um objecto.■ Um método é uma função
que pertence a umobjecto.
■ Uma função é umpequeno programa.
In : dir(2) Out: ['__abs__', '__add__', '__and__', #some others omitted'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
4
ObjectosObjectosObjectosObjectosObjectosObjectosObjectosObjectosObjectos
Todos os valores em Python são objectos■ Um objecto é uma combinação de dados e código que os processa• Um objecto é como um mini-programa
■ Exemplo: a constante numérica 2■ Métodos com nome__...__ são especiais
■ Objectos, métodos efunções são peçasimportantes para montarprogramas complexos.
In : dir(2) Out: ['__abs__', '__add__', '__and__', #some others omitted'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
5
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Constantes: números e strings■ Constantes numéricas são representadas por números• Tipos diferentes: inteiro, fraccionário, complexo
#int (inteiro)12 #float (Vírgula flutuante, com casas decimais)23.6 #complex (complexos, usando j para parte imaginária)12+3j
6
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Constantes: números e strings■ Operadores comuns para constantes numéricas: + - * / ** // %
In : 4 + 5 # addition Out: 9 In : 3 * 6 # multiplication Out: 18 In : 2 ** 5 # exponentiation Out: 32 In : 5 / 2 # division Out: 2.5 In : 5 // 2 # integer (floored) division Out: 2 In : 7 % 2 # modulus (remainder) Out: 1
7
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Constantes: números e strings■ Strings: texto delimitado por ' ' ou " "• A delimitação é necessária para o interpretador não tentar interpretar como o nome
de um objecto
In [1]: print('hello') hello In [2]: print(hello) Traceback (most recent call last): File "<ipython-input-13-43a14fcd4265>", line 1, in <module> print(hello) NameError: name 'hello' is not defined
8
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Constantes: números e strings■ Strings são também objectos, com métodos muito úteis• Nota: estes métodos não alteram a string; se produzem algo novo devolvem uma
cópia.
In: dir('hello') Out: ['__add__', '__class__', '__contains__', '__delattr__', #many others omitted 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
In : 'hello world'.title() Out: 'Hello World' In : 'HELLO'.lower() Out: 'hello' In : 'hello'.upper() Out: 'HELLO' In : 'hello'.replace('l','x') Out: 'hexxo' In : 'Hello'.swapcase() Out: 'hELLO'
9
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Constantes: números e strings■ Strings são também objectos, com métodos muito úteis• Nota: estes métodos não alteram a string; se produzem algo novo devolvem uma
cópia.
■ Também há operadores que podemos usar com strings: + *
In : 'hello' + 'world' Out: 'helloworld' In : 2*'hello' Out: 'hellohello'
10
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Polimorfismo■ Vários objectos apresentam uma interface comum• Permite uma operação tomar "formas" diferentes conforme o objecto• E.g. soma usa __add__, multiplicação usa __mul__, etc
In : 'hello'.__mul__(2) Out: 'hellohello' In : 'hello' * 2 Out: 'hellohello' In : 'hello'.__add__(' world') Out: 'hello world' In : 'hello' + ' world' Out: 'hello world'
■ Basta que os objectos tenham os métodos necessários• Mais tarde veremos outros exemplos, como vectores e matrizes.
11
ConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantesConstantes
Os métodos (e funções em geral) são objectos■ Para executar um método, ou qualquer função, é preciso ()• Mesmo que não haja argumentos
In : 'hello'.replace Out: <function str.replace> In : help('hello'.replace) Help on built-in function replace: ... Return a copy of S with all occurrences of substring old replaced by new. In : 'hello'.replace('l','x') Out: 'hexxo' In : 'hello'.upper() Out: 'HELLO'
In : help(len) Help on built-in function len len(obj, /) Return the number of items in a container. In : len('hello') #comprimento Out: 5 In : round(348.2) #arredonda Out: 348 In : int('234') #converte int Out: 234 In : str(124) #converte str Out: '124'
12
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
13
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Variáveis: processar informação em memória■ Nem tudo num programa pode ter um valor constante.■ Um nome quer refere um objecto em memória■ Letras, underscore, ou números mas não no início:
var, var1, Var_1, outra_var, __var__
a 101
... ...
... ...
Endereço Valor
101 0000000000000
102 1010100101000
103 1001010011010
... ...In : a = 0
14
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Variáveis: processar informação em memória■ Nem tudo num programa pode ter um valor constante.■ Um nome quer refere um objecto em memória■ Letras, underscore, ou números mas não no início:
var, var1, Var_1, outra_var, __var__
a 101
x 102
... ...
Endereço Valor
101 0000000000000
102 0000000000001
103 1000000011010
... ...In : a = 0 In : x = 1
15
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Variáveis: processar informação em memória■ Nem tudo num programa pode ter um valor constante.■ Um nome quer refere um objecto em memória■ Letras, underscore, ou números mas não no início:
var, var1, Var_1, outra_var, __var__
■ Criamos uma variável com o operador de atribuição =
# Create variables and choose names nothing = None # no value minimum_wage = 505 # integer pi_squared = 9.8696 # float name = 'Python' # single line string# multiple lines string: text = '''this string has several lines'''
16
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Criar variáveis■ Criamos uma variável com o operador de atribuição =■ Atribui valor da direita à variável da esquerda• À esquerda tem de haver um nome válido.
In : thirty_two = 32 In : 32 = thirty_two File "<ipython-input-16-7ac92e052411>", line 1 32 = thirty_two ^ SyntaxError: can't assign to literal
17
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Usar variáveis■ Podemos usar uma variável em qualquer contexto em que
podemos usar o valor que ela refere■ Ponto para usar método: nome_variavel.metodo(...)
In : thirty_two = 32 In : thirty_two * 2 Out: 64 In : name = 'Python' In : name.upper() Out: 'PYTHON' In : name.replace('h','---') Out: 'Pyt---on' In : name.find('o') Out: 4
18
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Nomes locais têm prioridade■ Python procura nomes, por ordem:• Local Global Built-in
■ Uma variável local "esconde" outros objectos com esse nome→ →
In : help = 31 In : help(len) Traceback (most recent call last): File "<ipython-input-39-d29297b41f1b>", line 1, in <module> help(len) TypeError: 'int' object is not callable
19
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Nomes locais têm prioridade■ Python procura nomes, por ordem:• Local Global Built-in
■ Uma variável local pode escondemos esse nome■ Podemos corrigir isso com del
→ →
In : del(help) In : help(len) Help on built-in function len in module builtins: len(obj, /) Return the number of items in a container.
20
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Exemplo: concentraçãoExemplo: concentraçãoExemplo: concentraçãoExemplo: concentraçãoExemplo: concentraçãoExemplo: concentraçãoExemplo: concentraçãoExemplo: concentraçãoExemplo: concentração
21
ExemploExemploExemploExemploExemploExemploExemploExemploExemplo
Cálculo de concentração■ Criar ficheiro concentration.py
# -*- coding: utf-8 -*-""" Compute concentration of 2g of NaCl in 125ml """ mmNaCl = 58.4 volume = 0.125 amount = 2 / mmNaCl concentration = amount / volume print('Concentration is ',concentration,'mol/dm^3')
■ Primeira linha: indica codificação do ficheiro para o interpretador■ String: Documentação do módulo (ficheiro)■ Executar o programa: tecla F5
22
ExemploExemploExemploExemploExemploExemploExemploExemploExemplo
Spyder: ambiente de desenvolvimento (IDE)
23
ExemploExemploExemploExemploExemploExemploExemploExemploExemplo
Cálculo de concentração■ Criar ficheiro concentration.py
# -*- coding: utf-8 -*-""" Compute concentration of 2g of NaCl in 125ml """ mmNaCl = 58.4 volume = 0.125 amount = 2 / mmNaCl concentration = amount / volume print('Concentration is ',concentration,'mol/dm^3')
In : runfile('/pasta/concentration.py', wdir='/pasta') Concentration is 0.273972602739726 mol/dm^3
24
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
ResumoResumoResumoResumoResumoResumoResumoResumoResumo
25
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
Resumo■ Objectos em Python■ Variáveis: criação e uso■ Exemplo:• Criar um ficheiro de código fonte (.py)• Usar variáveis para guardar valores• Executar (F5) no interpretador
26
VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis
TPC■ Secção 2.5 dos apontamentos• Tutorial sobre o Spyder e variáveis
Leitura adicional:■ Recomendada:• Capítulo 2 dos apontamentos• Capítulo 2 do livro "Thinking Python"
■ Opcional:• Capítulo 2 do livro "Introduction to Computation ... Python" até página 15 (antes da
secção 2.2)