Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Exercitando
Exercício 1
Faça um programa para calcular o valor pago no pedido de um usuário em uma lanchonete. Para isso, o programa deve receber do usuário, os códigos dos sanduiches e as respectivas quantidades. Calcule e mostre o nome do sanduiche, valor unitario, quantidade e o valor a ser pago pelo item e o total geral do pedido.
O programa termina quando o código do sanduiche for igual a 0 (zero).
A seguir é apresentado o Menu da lanchonete:
Codigo Sanduíche Preço
100 Hamburger R$ 12,00
200 Cheeseburger R$ 15,00
300 Duplo Cheeseburger R$ 20,00
400 cheeseFrango R$ 18,00
500 Hot Linguiça R$ 19,00
Fazer uma função que retorna o nome e o preço unitário do sanduiche escolhido.
Entrada da função: Código do Sanduíche.
Saída: Uma tupla contendo o nome e o preço unitário (faça uma pesquisa como retornar uma tupla de função).
A função deverá ter a tabela contendo o menu (cada item da tabela é uma tupla com código sanduiche e preço).
Solução
def sanduba(cod):
menu = [(100,'HamBurger',12.00), (200,'CheeseBurger', 15.00), (300, 'Duplo CheeseBurger', 20.00),
(400,'CheeseFrango', 18.00),(500, 'Hot Linguiça', 19.00)]
for c, sand, pr in menu:
if c == cod:
return sand, pr
return '',0.0
def imprimenota(ped):
tot = 0
totg = 0
print('Sanduiche Quantidade V.Unit Total')
for (sand,qtd,pr) in pedido:
tot = qtd * pr
print(sand, (24 - len(sand))*' ', qtd, ' ', pr, ' ', tot)
totg += tot
print(' total da Nota: ', totg)
pedido = []
cod = int(input('Digite o código do sanduiche ou -1 para fechar o pedido:'))
while cod != -1:
sand, pr = sanduba(cod)
if sand != '':
qtd = int(input('Digite a quantidade:'))
pedido.append((sand,qtd,pr))
cod = int(input('Digite o código do sanduiche ou -1 para fechar o pedido:'))
imprimenota(pedido)
Exercício 2
Faça um programa para ajudar o administrador de rede de uma empresa que precisa saber qual o espaço em disco ocupado pelos arquivos dos usuários, e identificar os usuários com maior espaço ocupado. A entrada do programa é a lista abaixo onde cada linha possui o nome do usuário e o total (em bytes) ocupado pelos arquivos:
alexandre 456123789
anderson 1245698456
antonio 123456456
carlos 91257581
cesar 987458
rosemary 789456125
A partir desta lista de entrada, você deve criar um programa que gere o relatório abaixo, no seguinte formato:
Empresa Uso do espaço em disco pelos usuários
------------------------------------------------------------------------
Nr. Usuário Espaço utilizado % do uso
1 alexandre 434,99 MB 16,85%
2 anderson 1187,99 MB 46,02%
3 antonio 117,73 MB 4,56%
4 carlos 87,03 MB 3,37%
5 cesar 0,94 MB 0,04%
6 rosemary 752,88 MB 29,16%
Espaço total ocupado: 2581,57 MB
Espaço médio ocupado: 430,26 MB
Os dados de entrada devem ser lidos e armazenados em memória, caso sejam necessários, de forma a agilizar a execução do programa. A conversão do espaço ocupado em disco, de bytes para megabytes (1 Mb = 220 bytes) deverá ser feita através de uma função separada, que será chamada pelo programa principal. O cálculo do percentual de uso também deverá ser feito através de uma função, que será chamada pelo programa principal.
Solução
converte = lambda x: x/2**20
percentual = lambda x,y: x/y*100
usuar=[]
for i in range(6):
nome = input('Digite o Nome do usuário:')
esp = int(input('Digite a quantidade de bytes usados:'))
usuar.append((nome,esp))
soma = sum(b for a, b in usuar)
print('Empresa Uso do espaço em disco pelos usuários')
print('------------------------------------------------------------------------')
print('Nr. Usuário Espaço utilizado % do uso')
for i in range(len(usuar)):
bytes = usuar[i][1] #Notação para o campo bytes da tupla na lista. O primeiro índice
# é da lista e o segundo da tupla
str = usuar[i][0] + (24 - len(usuar[i][0])) * " "
mega = converte(bytes)
perc = percentual(bytes,soma)
print('{0} {1} {2:.2f} {3:.2f}%'.format(i+1,str, mega, perc))
print('\nEspaço total ocupado: {0:.2f} MB'.format(converte(soma)))
print('Espaço médio ocupado: {0:.2f} MB'.format(converte(soma)/(i+1)))