Você está na página 1de 2

In [3]:

#Exercício 1:
#Define a lista mult17x que contém todos os múltiplos de 17, entre 1 e 10000 (inclusive),
#que sejam divisíveis por 5, mas não tenham dois dígitos 5.
#Por exemplo, a lista deve conter 765 ou 5525 mas não deve conter 595.

mult17x = [x for x in range(1, 10000) if x % 17 == 0 and x % 5 == 0 and str(x).count('5'


) != 2]

print(mult17x[:10])

[85, 170, 340, 425, 510, 680, 765, 850, 935, 1020]

In [4]:

#Exercício 2:
#Define a função mudar_vogais que recebe uma string e devolve uma string igual à dada,
#exceto que todas as vogais estão em maiúsculas.
#nota: o tipo string tem várias funções que lidam com maiúsculas e minúsculas, como
#upper(), lowe(), isupper(), islower().

def mudar_vogais(string):
vogais = 'aeiouAEIOU'
nova_string = ''
for letra in string:
if letra in vogais:
nova_string += letra.upper()
else:
nova_string += letra
return nova_string

string = 'montanha'
print(mudar_vogais(string))

string = 'Antes'
print(mudar_vogais(string))

mOntAnhA
AntEs

In [7]:
#Exercício 3:
#Define a função somar_pesar que recebe uma lista de inteiros e retorna o somatório
#dos números da lista. Porém, se um número for divisível por 10, deve contar o dobro,;
#e se terminar no dígito 7, deve contar o triplo.
#Por exemplo, para a lista [5,17,20,8,2] o resultado deve ser 5+3*17+2*20+8+2=106.

def somar_pesar(lista):
soma = 0
for numero in lista:
if numero % 10 == 0:
soma += 2 * numero
elif str(numero)[-1] == '7':
soma += 3 * numero
else:
soma += numero
return soma

print(somar_pesar([5, 17, 20, 8, 2]))

106

In [8]:
#Exercício 4:
#Defina a função dividirSomas que, dado uma lista de inteiros positivos, retorna o
#índice no qual se deve dividir a lista para que a soma das duas sub-listas seja o
#mais similar possível. O índice a devolver corresponde ao índice onde se inicia a
#segunda sub-lista. A lista inicial contém, pelo menos, dois valores.
#Por exemplo, para a lista [3,2,1], a função deve retornar o índice 1, porque se
#dividir a lista no índice 1 obtemos as sub-listas [3] e [2,1] que somam 3 e 3, sendo
#o módulo desta subtração igual a zero.
#Para a lista [1,2,4,8,16] a função deve retornar o índice 4, dado que as somas das
#sub-listas [1,2,4,8] e [16] são 15 e 16, sendo o módulo desta subtração 1, o menor
#valor possível de se otber.

def dividirSomas(lista):
total = sum(lista)
soma1 = 0

for i, valor in enumerate(lista):


soma1 += valor
soma2 = total - soma1

diferenca = abs(soma1 - soma2)

if i == len(lista) - 1 or diferenca < abs(soma1 - soma2 + lista[i + 1]):


return i + 1

print(dividirSomas([3,2,1]))
print(dividirSomas([1,2,4,8,16]))
print(dividirSomas([1,1,1,2,1]))

1
4
3

In [ ]:
#Exercício 5:
#Defina a função recursiva seqG dado um valor não negativo n, calcula o valor Gn
#da sequência: G(n) = 5 x G(n-3) + 2 x G(n-1) - G(n-2)
#com G(0) = 3, G(1) = 3, G(2) = 10.

def seqG(n, lista = {}):


if n == 0:
return 3
elif n == 1:
return 3
elif n == 2:
return 10
elif n in lista:
return lista[n]
else:
lista[n] = 5 * seqG(n-3) + 2 * seqG(n-1) - seqG(n-2)
return lista[n]

print([seqG(i) for i in range(10)])


print(seqG(20))
print(sum([seqG(i) for i in range(100)]))

??????????????????????????????????????????????????????????????????????

In [ ]:
#Exercício 6:
#Defina a função trocaSinais que, dado uma lista de inteiros positivos, retorna
#quantas somas diferentes é possível realizar se podermos escolher os sinais
#para cada inteiro.
#Por exemplo, para a lista[1,2,2], a função vai retornar seis, porque podemos
#aplicar as seguintes trocas de sinais [±1,±2,±2] que resulta nas combinações
#1+2+2, 1+2-2, 1-2+2, 1-2-2, -1+2+2, -1+2-2, -1-2+2, -1-2-2 que produzem um
#total de seis somas diferentes: 5,1,-3,3,-1,-5.
#De reparar que algumas combinações produzem o mesmo resultado, mas não
#queremos contar repetições.
#As listas usadas nos testes terão entre um e vinte números.

Você também pode gostar