Programação Python (Intermediário) - Prof. MARCO VAZ

MarcoVaz
9,276 views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Exercitando

Dada as tuplas x e y: x = (3, "Alô", "Velho", "Novo") y = (4, "Ano", "Mundo", "Feliz", "Natal"). Qual das opções abaixo exibirá a frase: "Feliz Ano Novo"?
Parece uma Lista mas seus elementos são fixos.Qual das opções abaixo apresenta o nome da estrutura?
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).

Programacao Python
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.

Programacao Python
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)))

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content