Fundamentos de Programação revisão e adendos
Tipos de dados Programas manipulam valores/dados (textos, números,...) de tipos distintos int 2017 O tipo de dado define o conjunto de valores válidos e disponibiliza um conjunto de operações que podem ser efetuadas Em Python os dados são objetos de um determinado tipo. float 3.141592653589793 Todo objeto tem um tipo e um valor que são determinados quando é criado e é armazenado na memória no formato de seu tipo. É necessário conhecer como a linguagem Python lida com os tipos de dados para evitar erros como realizar operações incompatíveis ao tipo str Mia#0 2
Alguns Tipos de Dados Nativos Simples Dados Tipo Valores Válidos Exemplos Numéricos Inteiros int N Z precisão fixa 5 101 6-943 -4 Numéricos com parte fracionária float Q R Precisão variável mantissa (m) e expoente (e) 15.3-0.37 6..37 15e-5 Textuais ou Alfanuméricos string Sequência de letras, dígitos, símbolos de pontuação e especiais igual ao número de caracteres da sequência 'a' '?' '6' '101' '12@34#$' 'Informática Puc-Rio' "banana'' 3
; Variável Uma variável é uma associação entre um nome e um valor. ano int 2017 pi float 3.141592653589793 nome str Mia#0 Pode ser utilizada e alterada pelo programa e deve ser criada antes de ser usada. O nome de uma variável pode ter um ou mais caracteres. Regras: 1º caratere: letra ou underscore('_') Demais caracteres: letras, números ou underscore ('_') Letras maiúsculas e minúsculas são consideradas diferentes; Proibido: caracteres especiais, espaços ou palavras reservadas Em Python, o tipo da variável é o tipo do valor associado operações mudam de acordo com o tipo 4
Atribuição (1/5) Associa o nome da variável ao valor resultante da avaliação da expressão. nomevariável = expressão Na 1ª atribuição: a variável é criada e seu conteúdo referencia o valor resultante da expressão. Nas demais atribuições: o valor da variável é substituído pelo resultado da expressão Sempre que o nome da variável for utilizado em uma expressão é automaticamente substituído pelo seu valor 5
Atribuição (2/5) nomevariável = expressão Valor constante Variável ou retorno da chamada de uma função Expressão : <operando> operador <operando> expressão aritmética: <operando> operador aritmético <operando> Operação Operador Aritmético Soma + Subtração - Multiplicação * Divisão / Divisão de inteiros // Resto da divisão % Potenciação ** Negativo - 6
Expressão Aritmética <operando> operador aritmético <operando> A expressão é avaliada de acordo com a prioridade dos operadores 1) Exponenciação (**) 2) Multiplicação e Divisão (*,/,//,%) 3) Soma e Subtração (+, -) expressão aritmética: A ordem de avaliação pode ser modificada por parênteses 7
Atribuição (3/5) import math total = 100 # Cria variável total que referencia o objeto inteiro 100 peso = 10.5 # Cria variável peso que referencia o objeto real 10.5 angulo = math.pi # Cria variável angulo que referencia o objeto real pi nome = 'Mia' Operações válidas com total operações do tipo inteiro (+, -, *, /, //, %, **) # Cria variável nome que referencia o objeto string "Mia" pi total int 100 angulo float 3.141592653589793 peso float 10.5 nome str Mia 8
Atribuição (4/5) import math total = 100 # Cria variável total que referencia o objeto inteiro 100 peso = 10.5 # Cria variável peso que referencia o objeto real 10.5 angulo = math.pi # Cria variável angulo que referencia o objeto real pi nome = 'Mia' total = 'Não sei...' # Cria variável nome que referencia o objeto string "Mia" pi total int 100 angulo float 3.141592653589793 peso float 10.5 nome str Mia 9
Atribuição (5/5) import math total = 100 # Cria variável total que referencia o objeto inteiro 100 peso = 10.5 # Cria variável peso que referencia o objeto real 10.5 angulo = math.pi nome = 'Mia' total = 'Não sei...' Operações válidas com total operações do tipo string (+,*) # Cria variável angulo que referencia o objeto real pi # Cria variável nome que referencia o objeto string "Mia" total str Não sei... pi angulo float 3.141592653589793 peso float 10.5 nome str Mia 10
Operador +: adiciona ou concatena Se ambos operandos são numéricos : soma os números Se ambos operandos são textos : concatena os textos Demais casos: erro de execução (TypeError: não converte tipos implicitamente) Exemplo: dtot = total + 2 # dtot é criado e associado ao objeto int resultante de 100+2 total = total + 4.2 # total é associado ao objeto float resultante de 100+4.2 email = nome+ '@gmail.com' # email é criado e associado ao objeto str da concatenação total nome peso cang float str float float 100 Mia 10.5-1.0 dtot total float 102 float 104.2 email Str Mia@gmail.com 11
Operador *: multiplica ou replica Se ambos operandos são numéricos: multiplica os números Se um operando é texto e outro nº inteiro: replica a string nº vezes Demais casos: erro de execução (TypeError: não converte tipos implicitamente) Exemplos: a = dtot * 2 # dtot é criado e associado ao objeto int resultante de 100+2 b = dtot * 2.0 # total é associado ao objeto float resultante de 100+4.2 nomrep = nome * 3 # norep é criado e associado ao objeto str com 'Mia' replicado 3 vezes total nome dtot int str int 104.2 Mia 102 b a int 204 float 204.0 nomrep str MiaMiaMia cang float -1.0 12
Mais sobre Strings: índices Strings são sequências de caracteres. As posições dos carateres na sequência são numeradas por índices: da esquerda para direita, iniciando em 0. da direita para a esquerda iniciando em -1. É possível acessar um caractere ou um intervalo (fatia/slice) da string, mas não modificá-los. string s: -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 13
Operações em Strings: acesso aos elementos Um caractere é uma string de comprimento 1. Um elemento pode ser selecionado (indexado) pelo seu índice (sua posição na sequência) utilizando o operador de indexação [ ]: string s: 'm' string[expressão inteira] '!' s[-9] s[-1] -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 s[0] s[3] s[9] 'U' ' ' '!' 14
Operações em Strings: fatias string[a:b:n] Seleciona um intervalo (fatia) da string da posição a (inclusive) até a posição b (exclusive) de n em n. Se a não for definido, será considerado como zero Se b não for definido, será considerado o tamanho da string. Se o intervalo n (entre os caracteres), não for definido, será 1. string s: -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 Exemplo: s[0:3] 'Uma' s[5: ] 'rase!' s[ :5] 'Uma f' 15
Exemplos de fatias de strings string s: -10-9 -8-7 -6-5 -4-3 -2-1 U m a f r a s e! 0 1 2 3 4 5 6 7 8 9 Qual a string resultante? s[:5] s[4:] s[-1:-3:-1] s[-1:-3] s[-3:-1] s[:] s[::2] s[0:4:2] s[4:0:-2] s[4: :-2] 'Uma f' 'frase!' '!e' '' 'se' 'Uma frase!' 'Uafae' 'Ua fa fau' 16
Fatias (slices): Resumo Sintaxe seq[a:b: n] seq[a : b] - cria uma cópia de a (inclusive) até b (exclusive) seq[a : ] - cria uma cópia a partir de a (inclusive) seq[ : b] - cria uma cópia até b (exclusive) seq[ : ] - cria uma cópia de todos os elementos seq[a : b: n] - cria uma cópia de a (inclusive) até b (exclusive) de n em n elementos 17
Variável String x Atribuição (1/6) emailprof = 'Mia@gmail.com' # Cria variável emailprof emailpart = 'Mia123@hotmail.com' # Cria variável emailpart 18
Variável String x Atribuição (2/6) emailprof = 'Mia@gmail.com' # Cria variável emailprof emailpart = 'Mia123@hotmail.com' # Cria variável emailpart Representação emailprof str Mia@gmail.com emailpart str Mia123@hotmail.com 19
Variável String x Atribuição (3/6) emailprof = 'Mia@gmail.com' # Cria variável emailprof emailpart = 'Mia123@hotmail.com' # Cria variável emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof Representação emailprof str Mia@gmail.com emailpart str Mia123@hotmail.com 20
Variável String x Atribuição (4/6) emailprof = 'Mia@gmail.com' # Cria var emailprof emailpart = 'Mia123@hotmail.com' # Cria var emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof Representação emailprof str Mia@puc-rio.br emailpart str Mia123@hotmail.com 21
Variável String x Atribuição (5/6) emailprof = 'Mia@gmail.com' # Cria var emailprof emailpart = 'Mia123@hotmail.com' # Cria var emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof emailprof[0] = 'a' Representação emailprof str Mia@puc-rio.br emailpart str Mia123@hotmail.com 22
Variável String x Atribuição (6/6) emailprof = 'Mia@gmail.com' # Cria var emailprof emailpart = 'Mia123@hotmail.com' # Cria var emailpart emailprof = 'Mia@puc-rio.br' # Associa outro valor à variável emailprof emailprof[0] = 'a' #ERRO!!!!! emailprof[0]='a' TypeError: 'str' object does not support item assignment Representação emailprof str Mia@puc-rio.br emailpart str Mia123@hotmail.com 23
Exercícios (1/4) 1. Crie uma string com o 2º e o 3º caractere da frase "Oie, tudo bem" replicados 4 vezes. Exemplo: ieieie' Dicas: associe a frase inicial a uma variável Uma fatia pode ser "separada" com o uso do operador [a:b:n] o operador + concatena strings o operador * replica strings 2. A operadora de celular em uma cidade guarda os números no formato abaixo. '+55(021)8888-8888'. Como a região trocou de 8 para 9 algarismos: Separe o país Separe a área Separe o número do telefone Crie a string com paísáreanº(velho) Coloque o 9 antes do nº do telefone no formato da operadora Crie a string com paísáreanº(novo) 24
Exercícios (2/4) 3. Crie a string alfabeto >>>alfabeto = "abcdefghijklmnopqrstuvwxyz" e, a partir da string alfabeto: a) crie uma string com o caractere do meio b) Importe o módulo random Veja o help da função choice : help(random.choice) Veja o help da função randint : help(random.randint) c) Mostre o caractere do alfabeto escolhido pelas duas funções (choice e o randint) CUIDADO: A função randint gera um nº em um intervalo. Para saber o caractere, este nº deve ser usado como índice da variável alfabeto. 25
Exercícios (3/4) 4. Guarde seu nome em uma variável. Exemplo: nome= 'Pedro José Silva Só' a) Exiba o sobrenome seguido de vírgula e do resto do nome(só,pedro José Silva) b) Exiba uma string formada por '*' com mesmo comprimento de seu nome (*******************). Dica: a função len(string) retorna o comprimento da string a) Exiba seu primeiro nome invertido ('ordep') b) Replique o caractere do meio de seu nome, para que tenha o mesmo comprimento de seu primeiro nome ('ééééé') 5. Guarde sua data de nascimento em uma variável no formato 'dd/mm/aaaa'. Exemplo dt = '01/01/1984' a) Exiba apenas o ano ('1984') b) Exiba o ano invertido ('4891') c) Exiba toda a data invertido ('4891/10/10') d) Exiba a data no formato 'dd-mm-aaaa' 26
Exercícios (4/4) 6. Um operador de crossover pode ser aplicado a duas strings s1 e s2 e consiste em sortear aleatoriamente um ponto de s1 e s2. Escolhido este ponto, então, é realizada a troca de informações de s1 e s2 tal como mostrado no esquema da Figura abaixo a) crie duas strings s1 e s2 b) considere um ponto de quebra sorteado via randint 27
Funções Uma função é uma sequência de instruções (bloco de código) independente, a qual se atribui um nome e que realiza uma tarefa específica Em geral computa valores a partir de valores recebidos: uma função pode receber e/ou retornar valores. As funções são ativadas pelo nome por outra função, módulo ou diretamente no interpretador Quando a função termina, o controle retorna para o ponto de onde a função foi chamada (invocada/ativada) 28
Motivando Funções Desenvolvimento da solução por partes Permite pensar no problema em diversos níveis Modularização Testes independentes facilita a correção de erros Reuso Mais legível (código menor) Facilita a manutenção 29
Definindo Funções (1/6) Definição da função inicia com "def" o cabeçalho termina com : 30
Definindo Funções (2/6) Definição da função inicia com"def" Nome da função o cabeçalho termina com : 31
Definindo Funções (3/6) Definição da função inicia com"def" Nome da função Parâmetros o cabeçalho termina com : 32
Definindo Funções (4/6) Definição da função inicia com"def" Nome da função Parâmetros Identação o cabeçalho termina com : 33
Definindo Funções (5/6) Definição da função inicia com"def" Nome da função Parâmetros Identação o cabeçalho termina com : "return" encerra a função, podendo retornar um valor 34
Definindo Funções (6/6) Definição da função inicia com"def" Nome da função Parâmetros Identação o cabeçalho termina com : docstring Texto sucinto que descreve o objetivo da função "return" encerra função, podendo retornar um valor 35
Funções: Sintaxe Formato geral: onde: nome : nome associado à sequência de instruções v1..vn: parâmetros - nomes associados aos valores transmitidos à função na sua chamada e necessários para realizar sua tarefa Uma função pode ter 0, 1 ou mais parâmetros comandos: sequência de instruções que será executada quando a função é invocada O comando return <exp> def funcao_qualquer (v1, v2,... v2): """ texto de documentação""" comando... comando return algo a) força o encerramento da função, retornando para quem a chamou. b) opcionalmente, devolve, um valor para a função de origem (exp) 36
Observações sobre Funções A definição da função deve ser feita antes da sua chamada para que o Python reconheça o seu nome. Não pode haver funções e variáveis com o mesmo nome! Os valores recebidos são associados aos parâmetros na ordem que estão na chamada. A chamada da função deve incluir um valor para cada parâmetro (exceção: parâmetros com valores default) Uma função pode ter 0, 1 ou mais return. Uma função pode chamar outra função. def f(x,y): return x-y def g(x,y): return f(x+y,6) a=3 b=4 c=g(a,b) #c:1 37
Observações O que acontece??? def f(x,y): return x-y A declaração da função deve ser feita antes da sua chamada para que o Python reconheça o seu nome. a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 38
Funções: definição e uso (1/14) O que acontece??? def f(x,y): return x-y A função só é executada se for ativada em algum comando a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 39
Funções: definição e uso (2/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 b int 4 40
Funções: definição e uso (3/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) A chamada da função deve incluir um valor para cada parâmetro #c:1 a int d=f(a,b) #d:-1 3 A função só é executada se for ativada em algum comando b As funções são ativadas pelo nome int 4 41
Funções: definição e uso (4/14) O que acontece??? def f(x,y): return x-y x y int int 4 3 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 Os valores são recebidos e associados aos parâmetros na ordem que estão na chamada. 42
Funções: definição e uso (5/14) O que acontece??? def f(x,y): return x-y x y int int 4 3 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 43
Funções: definição e uso (6/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) 1 #c:1 #d:-1 44
Funções: definição e uso (7/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 c Int 1 b int 4 45
Funções: definição e uso (8/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 c Int 1 b int 4 46
Funções: definição e uso (9/14) O que acontece??? def f(x,y): return x-y x y int int 3 4 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 Os valores são recebidos e associados aos parâmetros na ordem que estão na chamada. 47
Funções: definição e uso (10/14) O que acontece??? def f(x,y): return x-y x y int int 4 3 a=3 b=4 c=f(b,a) d=f(a,b) #c:1 #d:-1 48
Funções: definição e uso (11/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) -1 #c:1 #d:-1 49
Funções: definição e uso (12/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) #c:1 a int d=f(a,b) #d:-1 3 c Int 1 b int 4 d int -1 50
Funções: definição e uso (13/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) e=x-3 #c:1 #d:-1 51
Funções: definição e uso (14/14) O que acontece??? def f(x,y): return x-y a=3 b=4 c=f(b,a) d=f(a,b) e=x-3 #c:1 #d:-1 e=x-4 NameError: name 'x' is not defined Os parâmetros e demais variáveis definidas dentro da função são locais a ela, isto é, só existem onde foram definidas As variáveis locais são descartadas quando a função é finalizada 52
Mãos na massa: string URL Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço (URL) do site da disciplina. Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 53
URL: desenvolvendo a solução (1/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string 54
URL: desenvolvendo a solução (2/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? 55
URL: desenvolvendo a solução (3/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? Do nome da disciplina (uma string) 56
URL: desenvolvendo a solução (4/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? Do nome da disciplina (uma string) III. Como ela realiza sua tarefa? 57
URL: desenvolvendo a solução (5/5) Faça a função nomesite que receba o código de uma disciplina da PUC, construa e retorne o endereço da site da disciplina Exemplo: código da disciplina: inf1025 String de retorno: www.inf.puc-rio.br/~inf1025 I. Qual o objetivo desta função? Responder a quem a ativou o endereço do site da disciplina retornar uma string II. Do que a função precisa para realizar sua tarefa? Do nome da disciplina (uma string) III. Como ela realiza sua tarefa? 1. Separa o código do departamento 2. monta o endereço do site usando o código 58
URL: uma possível solução def nomesite(codigodadisciplina): """ Nome do site dada disciplina""" dep = codigodadisciplina [:3] site = 'www. \ + dep\ + '.puc-rio.br/~ \ + codigodadisciplina return site 59
Escopo dos nomes (1/3) import random def f(x,y): a=random.randint(x,y) return a+x-y a=3 b=4 c=f(b,a) d=f(a,b) escopo 2 - Função escopo 1- Módulo O escopo define a visibilidade de nomes em blocos de códigos (módulo,função,comando): Espaço de nomes (name space) - nomes acessíveis em um ponto do programa. Um programa começa no escopo do módulo, global (escopo1) e cada função / bloco acrescenta um escopo próprio local (escopo 2) 60
Escopo dos nomes (2/3) import random def f(x,y): a=random.randint(x,y) return a+x-y a=3 b=4 c=f(b,a) d=f(a,b) escopo 2 - Função escopo 1- Módulo Variável criada fora de um bloco é visível em qualquer lugar Variável criada dentro de um bloco, só existe se esse bloco for executado Quando um nome é acessado, todos os escopos são consultados, do mais interno para o mais externo variáveis globais podem ser ofuscadas por variáveis locais 61
Escopo dos nomes (3/3) Variáveis Locais a foi 'ofuscada', pois foi (re)definida na função Variáveis Globais import random def f(x,y): a=random.randint(x,y) return a+x-y a=3 b=4 c=f(b,a) d=f(a,b) escopo 2 - Função escopo 1- Módulo Evitar o uso de variáveis globais!!!! Escopo 2 Função f Nomes: Variáveis locais: a,x,y Variáveis Globais: b,c,d Instruções executadas só quando ativadas em um bloco de código Escopo 1 Módulo Nomes: função f Variáveis: a,b,c,d Instruções imediatamente executadas pelo interpretador 62
Blocos e variáveis: cuidado!! Variável criada dentro de um bloco só existe se esse bloco for executado: nome ='' for letra in nome k=letra*2 nome=nome+k 63
Bloco não roda, não cria variável! Variável criada dentro de um bloco só existe se esse bloco for executado: nome ='' for letra in nome k=letra*2 nome=nome+k Nome está vazio bloco do for não é executado a variável k não foi criada!! nome=nome+k NameError: name 'k' is not defined 64
Recursividade em funções Uma função pode chamar a si própria, isso é chamado de função recursiva. Cada vez que a função é chamada, uma nova instância de suas variáveis e parâmetros é criada. 65
Módulos Um módulo basicamente é um arquivo contendo funções, variáveis e constantes, com extensão.py Python fornece uma biblioteca padrão com inúmeros módulos O programador pode criar seus próprios módulos, salvando seus arquivos com extensão.py. Cuidado: para importar um módulo do programador, este deve estar salvo na mesma pasta do módulo atual ou em um caminho conhecido do Python... Um módulo pode ser importado por outro módulo para que este possa fazer uso da suas funcionalidades pelo comando import 66
Importando módulos import módulox: insere uma referência ao módulox no namespace do módulo atual. Todos os nomes definidos no módulox podem ser acessados. módulox.função(...) ativa uma função do módulox from módulox import * : Todos as definições do módulox são inseridas diretamente no namespace atual. Basta o nome da função definida no módulox para ativá-la from módulox import f1, f2, f3 : apenas as funções f1, f2 e f3 do módulox são inseridas no namespace do módulo atual. Útil em módulos com muitas funções: o Evita conflito de nomes com o namespace atual o Reduz tempo de carga do módulo 67
1. a) construa uma função que recebe as coordenadas de dois pontos e retorna a distância euclidiana entre eles. A fórmula da distância euclidiana é: d² = (Xa-Xb)² + (Ya-Yb)². b) construa uma função que recebe as coordenadas de três pontos quaisquer do plano que formam um triângulo (ou seja, as coordenadas x e y do ponto A, do ponto B e do ponto C) e retorne o perímetro deste triângulo calculado por: d(a,b) + d(a,c) + d(b,c) Exercícios (1/5) Exemplo: perimetro(-100,100,140,0,-290,290) 535.6643996204651 c) crie a função desenhatri, que recebe um tartaruga e os 3 pontos, desenha o triângulo formado pelos pontos com o uso do módulo turtle e escreve na coordenada 0,0 o valor do perímetro. Veja as funções goto() e write() do módulo turtle Observações: As funções distância, perimetro e desenhatri, devem estar no módulo functriangulo.py. Outro módulo chamado de progtri.py deve importar o módulo functriangulo, o módulo turtle, criar 3 pontos, a tartaruga e chamar a função desenhatri(...) 68
Exercícios (2/5) 2. a) construa uma função que recebe o raio de um círculo e retorna sua área b) construa uma função que recebe um raio, calcule a área de cada alvo conforme esquema abaixo e retorne um string com: ' Área verde:... Área amarela:... Área preta:... Raio do círculo externo O círculo externo, de cor verde, tem raio igual ao recebido, O raio do intermediário, de cor amarela, é 2/3 do raio do círculo externo o raio do central, de cor preta, é 1/3 do raio do círculo externo 69
Exercícios (3/5) 3. Dizem que para saber o seu número da sorte basta você seguir os seguintes passos: Multiplique sua idade por 4. Some 8. Multiplique o resultado por 60. Divida por 240. Some 22. Subtraia a sua idade. PARABENS! Esse é seu número da sorte. Escreva um função que receba o nome e a idade de uma pessoa e retorne a frase: "Parabéns fulano! seu número da sorte é x!", onde fulano é o nome da pessoa, e x é o número da sorte encontrado. Faça uma função separada para calcular o número da sorte. 70
Exercícios (4/5) 4. a) Faça uma função sopaletras, que recebe uma string e retorna esta string rotacionada para a esquerda (a 1ª letra vira última). Exemplo: >>> sopaletras ('abcdef') bcdefa b) DESAFIO: crie uma função que recebe uma string e constrói todas suas rotações. Exemplo: >>> sopaletras ('abcdef') ' bcdefa cdefab defabc efabcd fabcde' 5. Faça um função que receba um verbo regular terminado em er e retorne uma string com sua conjugação no presente do indicativo. Exemplo: >>> conjugar('absorver ) 'eu absorvo tu absorves ele absorve nós absorvemos vós absorveis eles absorvem' 71
Exercícios (5/5) 6. a) Faça uma função que receba uma string e retorna uma string apenas com os caracteres de índices pares b) Faça um função que receba uma string e retorne uma string com os caracteres da string recebida ao contrário c) Faça uma função que recebe o nome de uma pessoa e a data de nascimento ('dd/mm/aaaa' ) e crie e retorne sua senha de acordo com a seguintes regra: caracteres dos índices pares + dia do nascimento + caracteres dos índices pares invertidos Exemplo: senha('patinhas', '22/12/1900') 'Ptna22antP' 72