2 - v2 - v2 - v2 - v2 - v2 - v2 - v2 - v2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ice-b-02.pdfsecção...

28
ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B 2 - Variáveis 2 - Variáveis 2 - Variáveis 2 - Variáveis 2 - Variáveis 2 - Variáveis 2 - Variáveis 2 - Variáveis 2 - Variáveis Ludwig Krippahl

Upload: others

Post on 31-Dec-2020

101 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 2: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 3: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 4: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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']

Page 5: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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']

Page 6: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 7: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 8: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 9: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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'

Page 10: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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'

Page 11: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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.

Page 12: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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'

Page 13: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

12

VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis

VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis

Page 14: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 15: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 16: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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'''

Page 17: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 18: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 19: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 20: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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.

Page 21: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 22: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 23: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

22

ExemploExemploExemploExemploExemploExemploExemploExemploExemplo

Spyder: ambiente de desenvolvimento (IDE)

Page 24: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 25: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

24

VariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveisVariáveis

ResumoResumoResumoResumoResumoResumoResumoResumoResumo

Page 26: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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

Page 27: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional:

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)

Page 28: 2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 - V2 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-02.pdfSecção 2.5 dos apontamentos • Tutorial sobre o Spyder e variáveis Leitura adicional: