Você está na página 1de 8

10/15/2019 04-lista-gabarito - Jupyter Notebook

Introdução à Programação de Computadores


Lista de Exercícios #4

Professores:
Jefersson dos Santos - jefersson@dcc.ufmg.br
Guilherme Maia - jgmm@dcc.ufmg.br

Monitores:
Guilherme Pereira - guilhermepereira@dcc.ufmg.br
Igor Patricio dos Santos - igorp@ufmg.br
Igor Muzetti Pereira - igormuzetti@ufmg.br

Questão 1) Escreva um programa que calcula o fatorial de um valor n (n!) dado pelo usuário.
Exemplo: 5! = 5 ∗ 4 ∗ 3 ∗ 2 ∗ 1 = 120
In [ ]:

num = int(input('Digite um inteiro: '))


result = 1

while num >= 1:


result *= num
num -= 1

print(result)

Questão 2) Escreva um programa que leia um valor inteiro e imprima a soma de todos os inteiros pares de
zero até esse valor.

Exemplo:

Entrada:
11
Saída:
30

Entrada:
121
Saída:
3660

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 1/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

In [ ]:

num = int(input('Digite um inteiro: '))


result = 0

for i in range(0,num,2):
result += i

print(result)

Questão 3) Escreva um programa para ler n valores inteiros e calcular a média apenas dos valores positivos
(ignorando qualquer valor negativo).
Nota: O valor de n não será informado, implemente um laço que realize leituras até que o usuário digite um
valor flag (flag: 0). A flag é apenas um valor pré-definido que indica o fim das entradas, interrompendo o laço
de leitura.

Exemplo:

Entrada:
7
-5
63
-27
0
Saída:
35

In [ ]:

total = 0
n = 0

while True:
num = int(input('Digite um inteiro: '))

if num == 0:
break

elif num > 0:


total += num
n += 1

else:
continue

if n == 0:
print('Nenhum número positivo foi informado')

else:
print('A média é:', total/n)

Questão 4) Crie uma função menu() que imprima na tela o menu de opções a seguir e retorne o valor digitado
pelo usuário. Sua função deve verificar se o valor digitado é válido, e caso não seja, pedir que o usuário digite
um novo valor.

1. Adição
localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 2/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

2. Subtração
3. Multiplicação
4. Divisão
5. Saída

Ao retornar da chamada da função, você deve solicitar do usuário os números que serão operados, exibir o
resultado da expressão escolhida e retornar ao menu de opções. O programa só termina quando for escolhida
a opção 5 (saída).

In [ ]:

def menu():
print("1. Adição \n2. Subtração \n3. Multiplicação \n4. Divisão \n5. Saída")

while True:
op = int(input('Escolha uma opção: '))

if op < 1 or op > 5:
print('Escolha uma opção válida!')

else:
return op

while True:
op = menu()

if op == 5:
break

num1 = float(input('Digite o primeiro número: '))


num2 = float(input('Digite o segundo número número: '))

if op == 1:
print(num1 + num2,'\n')

elif op == 2:
print(num1 - num2,'\n')

elif op == 3:
print(num1 * num2,'\n')

else:
print(num1 / num2,'\n')

Questão 5) Escreva uma função intitulada floyd que recebe um número positivo N e imprime N linhas do
triângulo de Floyd. Escreva também o programa principal para ler N do usuário.
Nota: O triângulo de Floyd é um triângulo retângulo formado por números naturais. Para criá-lo, basta iniciar a
primeira linha com o número 1 e incrementar a quantidade de elementos das linhas subsequentes, bem como
os valores contidos nas linhas.

Exemplo:

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 3/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

Entrada:
6
Saida:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

In [ ]:

def floyd(n):
k = 1

for i in range(1, n + 1):

for j in range(1, i + 1):


print(k, end=" ")
k = k + 1

print()

num = int(input('Digite um inteiro: '))


floyd(num)

Questão 6) Escreva uma função chamada escalas que recebe três parâmetros: inicio, fim e passo, referentes
a um intervalo de temperatura em graus Celsius. Sua função deve imprimir n linhas contendo uma tabela de
conversão de graus Celsius para Fahrenheit e Kelvin nessa ordem. Escreva também o código principal (fora
da função) onde os valores inicio, fim e passo serão lidos do usuário.

𝑇𝐹 = 𝑇𝐶 ∗ 95 + 32
Nota: A conversão de Celsius para Fahrenheit é dada por:
A conversão de Celsius para Kelvin é dada por: 𝑇𝐾 = 𝑇𝐶 + 273

Exemplo

Entrada:
50
100
10
Saida:
50 122 323
60 140 333
70 158 343
80 176 353
90 194 363
100 212 373

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 4/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

In [ ]:

def escalas(inicio, fim, passo):

for i in range(inicio, fim + 1, passo):


print(i, int(i*9/5 + 32), i + 273)

inicio = int(input('Digite o inicio: '))


fim = int(input('Digite o fim: '))
passo = int(input('Digite o passo: '))

escalas(inicio, fim, passo)

Questão 7) Escreva a função mdc4(a,b,c,d) que retorna o máximo divisor comum entre a, b, c e d.

Dica: O mdc(a,b,c) = mdc(a, mdc(b,c) )

Exemplo

Entrada:
156
182
429
Saida:
13

Entrada:
6
12
15
Saida:
3

In [ ]:

def mdc4(a,b,c,d):

def mdc(x,y):
resto = None

while resto is not 0:


resto = x % y
x = y
y = resto

return x

return mdc(mdc(a,b), mdc(c,d))

mdc4(6,12,15,18)

Questão 8) Um funcionário recebe aumento anual. Em 1995 foi contratado por 2000 reais. Em 1996 recebeu
aumento de 1.5%. A partir de 1997, os aumentos sempre correspondem ao dobro do ano anterior. Faça um
programa que determine o salário atual do funcionário.

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 5/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

In [ ]:

salario = 2000
aumento = 0.015

for i in range(2019 - 1995):


salario *= (1 + aumento)
aumento *= 2

print(salario)

Questão 9) Escreva um programa para ler n valores inteiros e calcular:

1. A soma de todos os números


2. O maior número digitado
3. O menor número digitado
4. A média dos números pares
5. A quantidade de primos na sequência

Nota: O valor de n não será informado, implemente um laço que realize leituras até que o usuário digite um
valor flag (flag: 0). A flag é apenas um valor pré-definido que indica o fim das entradas, interrompendo o laço
de leitura.

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 6/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

In [ ]:

lista = []

while True:
num = int(input('Digite um inteiro: '))

if num == 0:
break

lista.append(num)

print('A soma é:', sum(lista))


print('O maior número é:', max(lista))
print('O memor número é:', min(lista))

n = 0
total = 0
nprimos = 0

for i in lista:
primo = True

if i % 2 == 0:
total += i
n += 1

if i <= 1:
primo = False

for j in range(2,i):
if i % j == 0:
primo = False
break

if primo == True:
nprimos += 1

print('A média dos pares é:', total/n)


print('O número de primos é:', nprimos)

Questão 10) Se os numeros de 1 a 5 são escritos em palavras: um, dois, três, quatro, cinco, então há 2 + 4 +
4 + 6 + 5 = 21 letras usadas no total. Faça um programa que conte quantas letras seriam utilizadas se todos os
números de 1 a 1000 (mil) fossem escritos em palavras. OBS: Nao conte espaços ou hifens.

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 7/8
10/15/2019 04-lista-gabarito - Jupyter Notebook

In [ ]:

def listaNum(num):
return list(str(num))

caracteres = { 1:2, 2:4, 3:4, 4:6, 5:5, 6:4, 7:4, 8:4, 9:4, 10:3,
11:4, 12:4, 13:5, 14:7, 15:6, 16:9, 17:9, 18:7, 19:8,
20:5, 30:5, 40:8, 50:8, 60:8, 70:7, 80:7, 90:7, '100single':3,
100:5, 200:8, 300:9, 400:11, 500:10, 600:9, 700:9, 800:9,
900: 9, 1000:3 }
total = 0

for i in range(1,1001):
lista = listaNum(i)

if i <= 20:
total += caracteres[i]

elif i < 100:


total += caracteres[int(lista[0]) * 10]

if int(lista[1]) is not 0:
total += caracteres[int(lista[1])] + 1

elif i == 100:
total += caracteres['100single']

elif i < 1000:


total += caracteres[int(lista[0]) * 100]

if int(lista[1]) is not 0:
total += caracteres[int(lista[1])* 10] + 1

if int(lista[2]) is not 0:
total += caracteres[int(lista[2])] + 1

else:
total += caracteres[i]

localhost:8888/notebooks/Documents/2019-2/Code-2019-2/Monitoria/04-lista-gabarito.ipynb 8/8

Você também pode gostar