Lógica, perguntado por analigia8559, 5 meses atrás

Enunciado: Imagina-se que você e sua equipe foram contratados por uma empresa preste serviços de limpeza para desenvolver a solução de software. Você ficou encarregado da parte de interação com o usuário.

O valor que a empresa cobra por limpeza é dado pela seguinte equação:

total=(metragem*tipo)+adional(is)

Em que cada uma das variáveis que compõe o preço total é quantizada da seguinte maneira:

Quadro 1: Metragem versus valor

Metragem (m²) Valor (R$)

30 <= metragem < 300 60 + 0. 3 * metragem

300 <= metragem < 700 120 + 0. 5 * metragem

Outros valores Não são aceitos

Quadro 2: Tipo versus multiplicador

Tipo Multiplicador

B – Básica - Indicada para sujeiras semanais ou quinzenais 1. 00

C – Completa - Indicada para sujeiras antigas e/ou não rotineiras 1. 30



Quadro 3: Adicionais versus valor

Adicionais Valor (R$)

0- Não desejo mais nada (encerrar) 0,00

1- Passar 10 peças de roupas - R$ 10. 00 10,00

2- Limpeza de 1 Forno/Micro-ondas - R$ 12,00 12,00

3- Limpeza de 1 Geladeira/Freezer - R$ 20,00 20,00


Elabore um programa em Python que:

Pergunte a metragem (em m²). Se digitar um valor não numérico e/ou metragem for menor/maior que o limite aceito repetir a pergunta;

Pergunte a tipo de limpeza. Se digitar uma opção não válida deve repetir a pergunta

Pergunte o adicional. Deve-se perguntar ao usuário se desejada mais algum adicional até digitar ele 0

Encerre o total a ser pago com base na equação desse enunciado;

Deve-se codificar uma função metragem_limpeza() (EXIGÊNCIA 1 de 3);

Deve-se perguntar dentro da função a metragem da porção (em m²);

Deve-se ter um if/else ou if/elif ou if/else/elif para verificar se o usuário não digitou uma metragem fora da faixa com que o empresa trabalha;

Deve-se ter try/except para o caso do usuário digitar um valor não numérico;

Deve-se retornar o valor em (RS) conforme a Quadro 1

Deve-se codificar uma função tipo_limpeza() (EXIGÊNCIA 2 de 3);

Deve-se perguntar dentro da função a opção desejada;

Deve-se ter um if/elif/else para verificar as opções possíveis ou não;

Deve-se retornar o multiplicador conforme o Quadro 2

Deve-se codificar uma função adicional_limpeza() (EXIGÊNCIA 3 de 3);

Deve-se perguntar dentro se deseja ou não mais algum adicional

Deve-se ter um if/elif/else para verificar as opções possíveis ou não;

Deve-se retornar o multiplicador conforme o Quadro 3

Soluções para a tarefa

Respondido por isadoracappuccelli
6

Veja abaixo o programa em Python que informa ao usuário o valor da limpeza desejada.

Comandos utilizados da linguagem Python:

  • input(): recebe dados do usuário;
  • print(): imprime na tela informações;
  • if/else: comando condicional que permite que o programa tome caminhos diferentes se uma exigência foi cumprida ou não;
  • try/except: permite que o programa continue rodando mesmo quando algo inesperado ocorre;
  • while: comando de loop que repete determinadas linhas de código enquanto uma variável for verdadeira.

Programa completo:

#função metragem da limpeza

def metragem_limpeza():

   metragem = input("Qual a metragem da porção a ser limpa? ")

   try:

       metragem = int(metragem)

       if not 30 <= metragem < 700:

           metragem_limpeza()

       else:

           metragem = int(metragem)

           if 30 <= metragem < 300:

               valor_metragem = 60 + 0.3*metragem

           else:

               valor_metragem = 120 + 0.5*metragem

           return valor_metragem

   except:

       metragem_limpeza()

#função tipo de limpeza

def tipo_limpeza():

   tipo = input ("Qual o tipo de limpeza será feita? Digite B para básica e C para completa. ")

   if tipo == "B":

       multiplicador = 1.00

   elif tipo == "C":

       multiplicador = 1.30

   else:

       tipo_limpeza()

   return multiplicador

#função adicional da limpeza

def adicional_limpeza():

   aux = 0

   print (tipos_adicional)

   while True:

       

       adicional = input ("Digite o número do adicional que deseja. ")

       if int(adicional) == 0:

           break

       elif int(adicional) in tipos_adicional:

           aux = aux + valor_adicional[int(adicional)]

       else:

           continue

   return aux

#tabela adicionais

tipos_adicional = {0: "Sem adicionais",

                  1: "Passar 10 peças de roupa",

                  2: "Limpeza de Forno/Microondas",

                  3: "Limpeza de Freezer/Geladeira"}

valor_adicional = [0, 10.00, 12.00, 20.00]

# programa

valor = metragem_limpeza()

tipo_limpeza = tipo_limpeza()

adicionais = adicional_limpeza()

total = (valor*tipo_limpeza) + adicionais

print(f"R$ {total:,.2f}")

Observe que o .2f permite que o programa imprima um valor com duas casas decimais, referente aos centavos.

Veja mais sobre Python em: https://brainly.com.br/tarefa/53905857

#SPJ1


jeffersonfrioli: ESTA DANDO ERRO TIPO DE LIMPEZA
jeffersonfrioli: UnboundLocalError Traceback (most recent call last)
in
100 valor = metragem_limpeza()
101
--> 102 tipo_limpeza = tipo_limpeza()
103
104 adicionais = adicional_limpeza()

in tipo_limpeza()
54 tipo_limpeza()
55
---> 56 return multiplicador
57
58 #função adicional da limpeza
isadoracappuccelli: Verificou em digitar em letra maiuscula? Não coloquei a função permitindo letra minuscula
isadoracappuccelli: # programa

valor = metragem_limpeza()
tipo_limpeza = tipo_limpeza()
adicionais = adicional_limpeza()
isadoracappuccelli: Troca nessa parte, o tipo_limpeza = tipo_limpeza() por limpeza_tipo = tipo_limpeza(). Esse erro é não reconhecimento de variável, não era pra dar pq eu rodei o código mas...
Perguntas interessantes