1. Escreva uma função dormindo
que recebe dois parâmetros booleanos, diasemana
e ferias
,
e retorna True
se diasemana
for falso ou ferias
for verdadeiro, e False
caso contrário.
Tente escrever a função sem usar if
e ==
.
2. Escreva uma função remove
que recebe como parâmetro uma string e uma posição nessa string
e retorna a string sem o caractere daquela posição (remove('abrir', 3) == 'abrr'
).
3. Escreva uma função nao
que adiciona a palavra não
ao início de uma string, exceto se
ela já começar com a palavra não
(nao('quero') == 'não quero', nao('não quero') == 'não quero'
).
4. Escreva uma função envolve
que recebe duas strings como parâmetro, sendo que a primeira
sempre tem um número par de caracteres, e retorna uma nova string onde a segunda está no meio da primeira
(envolve('<>', 'foo') == '<foo>', envolve('[[]]', 'bar') == '[[bar]]'
).
5. Escreva uma função tag
que recebe duas strings e cria uma “tag” HTML a partir delas
(tag('i', 'texto') == '<i>texto</i>', tag('title', 'minha página') == '<title>minha página</title>'
).
6. Escreva uma função que recebe uma tupla e retorna True
se o primeiro elemento for igual ao
último elemento da tupla.
7. Escreva uma função inverte
que recebe uma tupla de três elementos e retorna uma nova tupla com os
elementos na ordem reversa.
8. Escreva uma função intercala
que recebe duas tuplas de três elementos cada e retorna uma
tupla de seis elementos intercalando as duas tuplas.
9. Escreva uma função opera
que recebe uma tupla com uma string e dois números; se a string
for SOMA
, retorna a soma dos dois números, se for MULT
, retorna a multiplicação, se for DIV
,
retorna a divisão, se for SUB
, retorna a subtração, se não for nenhuma das anteriores retorna None
.
10. Escreva uma função que recebe uma string com o nome de um arquivo, e, se a extensão
dele for .jpeg
, reescreve a string para que a extensão seja .jpg
. Por exemplo, arq.jpeg
vira arq.jpg
.
11. Escreva uma função como a anterior, mas que, ao invés de reescrever apenas a extensão
.jpeg
para .jpg
, recebe como segundo parâmetro um dicionário que associa extensões a
novas extensões (por exemplo, { '.jpeg': '.jpg', '.texto': '.txt' }
.
12. Um leilão pode ser descrito por um dicionário com quatro campos: item
, uma string com o
nome do item, vencedor
, uma string com o nome de quem deu o maior lance do leilão, lance
, um float
com o valor do maior lance, e encerrado
, um booleano dizendo se o leilão está encerrado ou não.
Escreva duas funções: a função lance
recebe um leilão, um nome e um valor e, caso o leilão não esteja
encerrado e o valor seja maior que o valor do maior lance, retorna um novo leilão com o nome e valor
do maior lance atualizados, caso contrário simplesmente retorna o leilão; a função encerra
recebe um
leilão e retorna um novo leilão com os dados do original, mas encerrado.
13. Um documento é um dicionário com um campo tipo
, e outros campos que dependem do valor de tipo
:
se tipo
for a string 'carta'
, os campos são destinatario
, data
e assinatura
;
se tipo
for 'memo'
, os campos são remetente
, destinatario
, data
e assunto
;
se tipo
for 'cv'
, os campos são nome
e data
. Escreva a função autor
, que recebe um documento
e retorna seu autor (quem assinou a carta, o remetente de um memo, ou o nome de um cv).
14. Um sólido pode ser descrito por um dicionário com um campo tipo
(uma string), e outros campos de que dependem
do valor de tipo
: se tipo
for cubo
, esse campo é lado
; se tipo
for paralelepipedo
, os campos são
comprimento
, largura
e altura
; se tipo
for esfera
, esse campo é raio
. Escreva a função
volume
, que calcula o volume de um sólido.
15. Refaça a questão 12, mas com o estado do leilão armazenado em quatro variáveis globais, correspondendo
aos quatro campos do dicionário. A função lance
agora recebe apenas um nome e um valor, e a função
encerra
não recebe nenhum parâmetro. As duas funções atualizam o estado global, se necessário.
16. O estado de um robô é dado por um por um par de coordenadas guardadas em duas variáveis globais, X
e Y
,
inicialmente iguais a 0
, e por uma variável global DIR
que indica para onde ele está virado (uma string
indicando norte, sul, leste ou oeste). Escreva três funções que controlam o movimento do robô: move
recebe
um número inteiro e move o robô na direção atual, esquerda
gira ele noventa graus para a esquerda e direita
gira ele noventa graus para a direita. As coordenadas do robô não podem ser menores que 0 nem maiores que 10.