Guide for El cistell de la compra (2)


Això és una guia per ajudar-te a començar amb aquest problema — no és la solució.
Mostra el codi per a: Consideracions generals Java 11 Python 3

Com abordar aquest problema

Se't donen N productes (nom i preu) i, al final, el nom d'un producte que vols comprovar. Has de dir \ si el tens a la cistella i, si el trobes, dir també quin és l'anterior en ordre alfabètic (si n'hi ha).

Idea general:

  1. Llegeix el nombre N i, a continuació, els N parells (nom, preu).
  2. Guarda'ls en una llista de parelles (nom, preu).
  3. Ordena la llista pel nom del producte, en ordre alfabètic.
  4. Llegeix el nom del producte que es vol comprovar.
  5. Busca'l dins la llista ja ordenada. Si no hi és, escriu "NO N'HI HAVIA".
  6. Si hi és, escriu "SI, M'HA COSTAT " seguit del preu. Si, a més, no és el primer de la llista \ ordenada, afegeix " I TAMBE TINC " amb el nom i el preu del producte immediatament anterior en \ l'ordre alfabètic.

Paranys habituals:

  • Cal ordenar per nom, no pel l'ordre en què s'han llegit els productes.
  • El "producte anterior" ho és en ordre alfabètic un cop ordenada la llista, no l'anterior a l'entrada.
  • Si el producte trobat és el primer en ordre alfabètic, no cal afegir la segona part del missatge.
  • Vigila com formates el preu perquè coincideixi amb com l'has llegit.

Pista per a Python

Llegeix els productes en una llista de parelles (nom, preu), ordena-la pel nom, i després busca-hi \ el producte demanat per saber també quin és el seu anterior alfabètic:

n = int(input())
productes = []
for _ in range(n):
    nom, preu = input().split()
    productes.append((nom, float(preu)))

productes.sort(key=lambda p: p[0])

buscat = input().strip()

posicio = -1
for i, (nom, preu) in enumerate(productes):
    if nom == buscat:
        posicio = i
        break

if posicio == -1:
    print("NO N'HI HAVIA")
else:
    nom, preu = productes[posicio]
    sortida = f"SI, M'HA COSTAT {preu}"
    if posicio > 0:
        nom_ant, preu_ant = productes[posicio - 1]
        sortida += f" I TAMBE TINC {nom_ant} A {preu_ant}"
    print(sortida)

Tornar al problema