PROGRAMAÇÃO EM JOGOS DIGITAIS Frutuoso Silva Linguagem de Programação Python --- www.python.org 1 Sequências em Python String Tuplo Lista Sequências - Propriedades ! São indexáveis ! Posso ! São iteráveis ! Posso ! aceder a cada elemento individualmente; percorrer todos os elementos da sequência; São particionáveis ! Posso aceder a partes (slices) da sequência; 2 Sequências ! Str1 = “Isto é uma string!” ! Tuplo1 = (1, 2, 3, 4) ! Lista1 = [1, 2, 3, 4] O que acontece quando fazemos o print das sequências anteriores? Sequências ! print Str1 ---- Isto é uma string! ! print Tuplo1 ---- (1, 2, 3, 4) ! print Lista1 ---- [1, 2, 3, 4] 3 String Str1 = "Isto é uma string!" print Str1 #indexação de um elemento print Str1[5] #slicing seq[inicio:fim:intervalo] print Str1[6:] print Str1[:6] print Str1[::3] print Str1[7:10] String Str1 = "Isto é uma string!" print Str1 #indexação de um elemento print Str1[5] #slicing seq[inicio:fim:intervalo] print Str1[6:] --- uma string! print Str1[:6] --- Isto é print Str1[::3] --- Io atn print Str1[7:10] --- uma 4 Tuplo Tuplo1 = (1, 2, 3, 4) print Tuplo1 #indexação de um elemento print Tuplo1[1] #slicing print Tuplo1[1:3] print Tuplo1[::2] Tuplo Tuplo1 = (1, 2, 3, 4) print Tuplo1 ---- (1, 2, 3, 4) #indexação de um elemento print Tuplo1[1] ---- 2 #slicing seq[inicio:fim:intervalo] print Tuplo1[1:3] ---- (2, 3) print Tuplo1[::2] ---- (1, 3) 5 Lista Lista1 = [1, 2, 3, 4] print Lista1 #indexação de um elemento print Lista1[2] #slicing seq[inicio:fim:intervalo] print Lista1[1::2] print Lista1[1:4] print Lista1[-2] Lista Lista1 = [1, 2, 3, 4] print Lista1 ---- [1, 2, 3, 4] #indexação de um elemento print Lista1[2] ---- 3 #slicing seq[inicio:fim:intervalo] print Lista1[1::2] ---- [2, 4] print Lista1[1:4] ---- [2, 3, 4] print Lista1[-2] ---- 3 6 Tuplos vs Listas ! Qual é a diferença entre os tuplos e as listas? ! Para além dos ( ) vs [ ] ! … Tuplos vs Listas ! Qual é a diferença entre os tuplos e as listas? ! Para além dos ( ) vs [ ] ! Ser alterável ou não print Str1[5] = ‘x’ ---- Not allowed print Tuplo1[2] = 5 ---- Not allowed print Lista1[2] = 5 ---- Allowed 7 Tuplos vs Listas ! Principais operações com tuplos Expressão Python Resultado Descrição (1,2,3) + (4,5,6) (1,2,3,4,5,6) Concatenação 3 in (1,2,3,4) True Pertence ou é membro de for x in (1, 2, 3): print x 123 Iteração (‘Yes’, )* 3 (‘Yes’, ‘Yes’, ‘Yes’) Repetição len( (1,2,3,4) ) 4 Comprimento max( (1,2,3,4) ) 4 Máximo min( (1,2,3,4) ) 1 Minímo Tuplos vs Listas ! Operações com listas Expressão Python Resultado Descrição [1,2,3] + [4,5,6] [1,2,3,4,5,6] Concatenação 3 in [1,2,3,4] True Pertence ou é membro de for x in [1, 2, 3]: print x 123 Iteração [‘Yes’, ]* 3 [‘Yes’, ‘Yes’, ‘Yes’] Repetição len( [1,2,3,4] ) 4 Comprimento max([1,2,3,4]) 4 Máximo min([1,2,3,4]) 1 Minímo 8 Tuplos vs Listas ! Qual é a diferença entre os tuplos e as listas? ! Para ! além dos ( ) vs [ ] Mas as operações são as mesmas !!! Tuplos vs Listas ! Qual é a diferença entre os tuplos e as listas? ! Para ! além dos ( ) vs [ ] Mas as operações são as mesmas !!! Contudo as listas possuem também - Métodos específicos 9 Listas ! As listas possuem métodos (i.e., são um objecto) ! Adicionar ! Apagar elementos; elementos; ! Pesquisar elementos; ! ... Listas ! Adicionar elementos à lista: li = ['a', 'b', 'list', 'z', 'example'] # Adicionar um novo elemento li.append('new') print li ['a', 'b', 'list', 'z', 'example', 'new'] 10 Listas ! Adicionar elementos à lista: li = ['a', 'b', 'list', 'z', 'example'] # Adicionar um novo elemento numa posição X li.insert(2,'new') print li ['a', 'b', ’new', 'z', 'example’] Listas ! Adicionar elementos à lista: li = ['a', 'b', 'list', 'z', 'example'] # Adicionar elementos de uma lista li.extend([‘two’,’elements’]) print li ['a', 'b', ’new', 'z', 'example', 'new', 'two', 'elements'] 11 Listas ! Adicionar elementos à lista: # Adicionar um elemento li.append(’new') li.insert(2,’new') # Concatenar/juntar listas li.extend([‘two’,’elements’]) Listas ! Adicionar elementos à lista: li = ['a', 'b’, ’p’] # Adicionar elementos li.extend([’w’, ‘x’]) print li ['a', 'b’, ’p’, ‘w’, ‘x’] 12 Listas ! Adicionar elementos à lista: li = ['a', 'b’, ’p’] # Adicionar um elemento li.append([’w’, ‘x’]) print li Como funciona? Listas ! Adicionar elementos à lista: li = ['a', 'b’, ’p’] # Adicionar um novo elemento li.append([’w’, ‘x’]) print li ['a', 'b’, ’p’, [‘w’, ‘x’]] print li[-1] [‘w’, ‘x’] 13 Listas ! Pesquisar elemento na lista: li = [’yes', 'bye’, ’no’, ‘bye’] # Pesquisar a 1ª ocorrência do elemento print li.index(‘bye’) Apagar um elemento da lista: # Apaga a 1ª ocorrência do elemento li.remove(‘bye’) print li ! Listas ! Contar os elemento da lista: li = [’yes', 'bye’, ’no’, ‘bye’] # Contar o nº elementos iguais a X print li.count(‘bye’) Retirar último elemento da lista: # Remove e devolve o último elemento print li.pop() ! 14 Listas ! Ordenar a lista: li = [’yes', 'bye’, ’no’, ‘bye’] # Ordena a lista por ordem crescente li.sort() print li ! Inverter a lista: # Inverte a lista li.reverse() print li Listas ! ! As listas em Python permitem efectuar um conjunto vasto de operações sem necessidade de programar. É a estrutura de dados mais versátil em Python ! morada = ['Rua XY', '5', ’1100', ’Lisboa’] 15 Dicionários O que é um dicionário? Como funciona esta estrutura de dados? O que é um Dicionário? ! ! ! É uma estrutura de dados similar a uma lista mas mais genérica. Numa lista os índices têm de ser inteiros; Num dicionário os índices podem ser de diversos tipos; 16 O que é um Dicionário? ! ! Podemos pensar num dicionário como um mapeamento entre um conjunto de índices e um conjunto de valores. Dictionaries consist of pairs (called items) of keys and their corresponding values. Dicionário ! Como se cria um dicionário? dic1 = {’Ana': '2341', ’Bia': '9102', ’Ze': '3258'} dic2 = dict() ! Adicionar item ao dicionário dic2 = dict() #Empty dictionary dic2[‘John’] = ‘1111’ print dic2 17 Dicionário ! Como se cria um dicionário? dic1 = {’Ana': '2341', ’Bia': '9102', ’Ze': '3258'} dic2 = dict() ! Adicionar item ao dicionário dic2 = dict() # Empty dictionary dic2[‘John’] = ‘1111’ print dic2 {'John': '1111'} Dicionário dic2 = dict() # Empty dictionary dic2[‘John’] = ‘1111’ dic2[‘Leo’] = ‘2222’ print dic2 {'John': '1111', 'Leo': '2222'} print dic2[‘Leo’] 2222 18 Dicionário ! Adicionar/Actualizar um item dic2 = dict() # Empty dictionary dic2[‘John’] = ‘1111’ print dic2 {'John': '1111'} dic2[‘Kate’] = ‘3333’ # Add new entry dic2[‘John’] = ‘5555’ # Update existing entry print dic2[‘John’] 5555 Dicionário ! Apagar um item do dicionário dict = {'Name': 'Maria', 'Age': 7, 'Class': 'First’} print dict {'Age': 7, 'Name': 'Maria', 'Class': 'First'} del dict['Name'] # remove entry with key 'Name' print dict {'Age': 7, 'Class': 'First'} dict.clear() # remove all entries in dict del dict # delete entire dictionary 19 Dicionário ! Propriedades das chaves de um dicionário: ! Não é permitida mais do que uma entrada por chave. Logo não são permitidas chaves repetidas; ! As chaves são imutáveis. Logo é permitido ter strings, números e tuplos mas não listas. Dicionário ! Operações disponíveis sobre dicionários dict = {'Name': 'Maria', 'Age': 7, 'Class': 'First’} dict.clear() # Removes all elements of dictionary dict dict.copy() # Returns a shallow copy of dictionary dict dict.has_key(key) # Returns true if key in dictionary dict, false otherwise dict.items() # Returns a list of dict's (key, value) tuple pairs dict.keys() # Returns list of dictionary dict's keys dict.values() # Returns list of dictionary dict's values 20 Dicionário ! Operações disponíveis sobre dicionários dict = {'Name': 'Maria', 'Age': 7, 'Class': 'First’} dict.update(dict2)# Adds dictionary dict2's key-values pairs to dict dict.get(key1) # For key1 key, returns value or \ default ‘None’ if key not in dictionary dict.formKeys(seq[, value]) # Create a new dictionary with keys \ from seq and values set to value. dict.setdefault(key1) # Similar to get(), but will set dict[key1]=None if key is not already in dict 21