Esta página contiene las soluciones para los ejercicios y el proyecto del quinto día del curso.
- Recuerda que para llegar al valor 14, el range() tiene que tener hasta el 15.
for i in range(7,15): print(f"El valor del bucle es: {i}.")
- En este caso, se puede poner de condición, menor o igual a 14.
i = 7 while i <= 14: print(f"El valor del bucle es: {i}.") i += 1
- Primero el bucle for y luego el while:
for i in range (0,-5001, -500): print(f"El valor del bucle es: {i}.")
i = 0 while i >= -5000: print(f"El valor del bucle es: {i}.") i -= 500
- Una vez aprendes bien a iterar listas con bucles, esto es de lo más sencillo de hacer:
for pais in paises: print(f"-> {pais} <-")
Recuerda que la variable «i» de los bucles, se suele poner por convención, no es obligatoria. Hay veces donde es más entendible poner, por ejemplo «pais», que es lo que se almacena en cada vuelta del bucle, un «país» de la lista de «países».
- En primer lugar, ordeno la lista de menor a mayor con sort(). Para que el 356 quede al final (es el mayor),
Con un bucle for, itero toda la lista.
Anido un if para indicar que si el valor es igual a 10, que lo omita (continue).
Si el valor es igual a 356, que rompa la ejecución del bucle (break) como se pide (también se podía hacer con un «continue» puesto que está al final de la lista y el bucle ya termina).
Si no es ninguno de estos dos valores, se imprimen con normalidad.
Tienes dos posibles soluciones, hacer if individuales o un if elif else:
lista_numeros = [10,45,356,10,10,10,46,67,45,10,10,43,10,65,10,10] # Se ordena la lista de menor a mayor lista_numeros.sort() # Bucle para iterar la lista for i in lista_numeros: if i == 10: continue # Se omiten los valores 10 if i == 356: break # Se rompe la iteración en el momento que el valor de i es 356 print(f"El valor del elemento es: {i}")
lista_numeros = [10,45,356,10,10,10,46,67,45,10,10,43,10,65,10,10] # Se ordena la lista de menor a mayor lista_numeros.sort() # Bucle para iterar la lista for i in lista_numeros: if i == 10: continue # Se omiten los valores 10 elif i == 356: break # Se rompe la iteración en el momento que el valor de i es 356 else: print(f"El valor del elemento es: {i}")
Solución del proyecto de pedido en pizzería
Primero de todo, aquí tienes el código. Si lo has hecho diferente, lo importante, como siempre digo, es que cumpla con los requisitos solicitados que puedas lograr. Como siempre, puedes ver la explicación de este código con todo detalle en el vídeo correspondiente a este día del curso.
# Declaración de las variables del programa dinero = float(input("Hola, indique el dinero que lleva.\n")) DINERO_INICIAL = dinero total = 0 pedido = [] margarita = 7.85 jamon_queso = 9.65 cuatro_quesos = 8.95 extra_queso = 1.25 champinones = 0.85 albahaca = 0.5 # Título del programa print("-> Pizzería PF <-\n") # Bucle infinito (True) para pizzas - Número de ejecuciones indeterminadas while True: # Menú de pizzas print(f"1 - Margarita - {margarita}$") print(f"2 - Jamón y queso - {jamon_queso}$") print(f"3 - Cuatro quesos - {cuatro_quesos}$") # Almacena la elección del usuario eleccion = int(input("Hola, por favor, seleccione su pizza con un número de opción.\n")) # Se calcula el cambio y el total, se indica la pizza elegida, se añade a la lista match eleccion: case 1: print(f"Ha elegido la pizza margarita.\nTotal a pagar {margarita}$.") dinero -= margarita print(f"Le quedan {round(dinero,2)}$.") total += margarita pedido.append(f"Margarita - {margarita}$") break case 2: print(f"Ha elegido la pizza de jamón y queso.\nTotal a pagar {jamon_queso}$.") dinero -= jamon_queso print(f"Le quedan {round(dinero,2)}$.") total += jamon_queso pedido.append(f"Jamón y queso - {jamon_queso}$") break case 3: print(f"Ha elegido la pizza cuatro quesos.\nTotal a pagar {cuatro_quesos}$.") dinero -= cuatro_quesos print(f"Le quedan {round(dinero,2)}$.") total += cuatro_quesos pedido.append(f"Cuatro quesos - {cuatro_quesos}$") break case _: print(f"Opción incorrecta. Seleccione una opción del 1 al 3.") # Bucle infinito (True) para ingredientes - Número de ejecuciones indeterminadas while True: # Menú de ingredientes print(f"1 - Extra de queso - {extra_queso}$") print(f"2 - Champiñones - {champinones}$") print(f"3 - Albahaca - {albahaca}$") print(f"4 - No añadir nada extra y pagar.") # Almacena la elección del usuario eleccion = int(input("Si desea algún ingrediente extra, selecciónelo.\n")) # Se calcula el cambio y el total, se indican los ingredientes elegidos, # se añaden a la lista... match eleccion: case 1: print(f"Ha elegido extra de queso.\nExtra a pagar {extra_queso}$.") dinero -= extra_queso total += extra_queso print(f"Total a pagar: {total}$.") print(f"Le quedan {round(dinero,2)}$.") pedido.append(f"Extra de queso - {extra_queso}$") case 2: print(f"Ha elegido champiñones extra.\nExtra a pagar {champinones}$.") dinero -= champinones total += champinones print(f"Total a pagar: {total}$.") print(f"Le quedan {round(dinero,2)}$.") pedido.append(f"Champiñones - {champinones}$") case 3: print(f"Ha elegido añadir albahaca.\nExtra a pagar {albahaca}$.") dinero -= albahaca total += albahaca print(f"Total a pagar: {total}$.") print(f"Le quedan {round(dinero,2)}$.") pedido.append(f"Albahaca - {albahaca}$") case 4: print("De acuerdo, no se añade nada extra.") break case _: print(f"Opción incorrecta. Seleccione una opción del 1 al 4.") # Un condicional para determinar si le llega el dinero al usuario con su pedido. # Si le llega, se ejecuta el if y le saca el ticket con todo lo pedido. if total <= DINERO_INICIAL: print("\n--- SU PEDIDO ---") print(f"El total de su pedido es: {total}$.") print(f"Su cambio: {dinero}$.\n") for i in pedido: print(f"-{i}.") print("\n¡Buen provecho!") # Si el dinero no le llega, le indica que no le llega y no imprime el ticket. else: print("No le llega el dinero para todo eso. Por favor, vuelva a empezar.")
Muy buen proyecto, y mejor todavía lo que nos enseñas. Abrazo enorme!
Mil gracias por este increible curso, estoy aprendiendo muchísimo y de una manera super entretenida. Por si os interesa, comparto mi proyecto de «PIZZA WEB».
Tiene en cuenta muchas más cosas de las que se solicitan en el proyecto inicial: pregunta al usuario si quiere ingredientes extra (puedes responder con Si o No sin importar mayúsculas o minúscuals, o solo con una S o una N), detecta si dispones de crédito suficiente en todo el proceso, agrupa los pedidos en el tocket final…
… y alguna cosita que otra más.
Me lo he pasado genial creándo este proyecto, espero que os guste, he dejado muchísimos comentarios en el código para que no se pierda nadie.
El resultado final termina con un ticket de este tipo:
¡Buen provecho!
__________________TICKET______________________
Pizza Base:
1 Base Pizza Margarita _____________ Total: 12.5 créditos
Ingredientes extra:
2 Extra de Quesos ________________ Total: 2.4 créditos
1 Extra de Champiñones ____________ Total: 1.2 créditos
3 Extra de tomate natural ___________ Total: 3.6 créditos
-Coste total del pedido:___________________ 19.7 créditos
-Crédito disponible:______________________ 16.3 créditos
CÓDIGO:
print(«———————-PIZZERÍA WEB————————— «) # Título del programa.
# Variables y constantes:
total = 0 # Esta variable acumula el gasto que se carga en cada pedido.
pedido = [«Pizza Base Margarita», «Pizza Base Boloñesa», «Pizza Base Cuatro Quesos», «Extra de quesos», «Extra de Champiñones», «Extra de tomate natural»] #Esta lista almacenará los elementos de cada pedido para general el ticket final, si bajas al final del código verás que al dejar esta lista pre-cargada, he podido generar un sistema que cuenta, agrupa y valora los ingredientes repetidos.
#Estas variables indican el precio de cada base de pizza. Si se modifica, se recalcula todo automáticamente, incluidos los criterios utilizados para detectar si el importe del usuario es suficiente para adquirir, al menos, el producto más económico.
margarita = 12.50
bolonesa = 14.60
cuatro_quesos = 13.65
# Esta lista almacena las bases de pizza, la sentencia de la línea inferior, con el sort(), la ordena de mayor a menor. De esta manera, siempre figurará primero la pizza de menos coste. Más adelante se usa este valor para establecer el crédito mínimo necesario para realizar un pedido.
lista_productos = [bolonesa, margarita ,cuatro_quesos]
lista_productos.sort()
#Estas variables indican el precio de cada ingrediente extra. Es igual que las bases de pizza, se pueden modificar y todo se recalcualrá automáticamente.
queso = 1.20
champinon = 1.50
tomate_natural = 1.10
# Esta lista almacena los ingredientes extra, la sentencia de la línea inferior, con el sort(), la ordena de mayor a menor. De esta manera, siempre figurará primero el ingrediente de menos coste. Más adelante se usa este valor para establecer el crédito mínimo necesario para añadir un ingrediente.
lista_extras = [ queso, champinon ,tomate_natural]
lista_extras.sort()
#Se inicia el bucle inicial de solicitud y comprobación de saldo:
while True:
credito = float(input («¿Qué cantidad de crédito desea cargar para este pedido?\n»)) # Permite introducir los créditos para iniciar el pedido.
creditos_iniciales = credito # Se establece el crédito inicial.
print(f»Saldo actual: {creditos_iniciales} créditos») # Informa al usuario del crédito introducido.
if creditos_iniciales = margarita: # Descuenta al crédito inicial el importe de la pizza.
pedido.append(f»Pizza Base Margarita») # Añade a la lista el producto adquirido para generar el ticket.
credito -= float (margarita) # Descuenta el coste de la base de pizza del importe inicial.
total += margarita # Almacena el total de gasto acumulado con este pedido.
print(f»Su saldo actual es de {round(credito, 2)} créditos.») # Informa al usuario de saldo actual de sus créditos.
break # Rompe este bucle para pasar al bucle de elección de ingredientes extra.
else: # Si el crédito inicial es insuficiente, avisa al usuario y regresa al bucle principal para solicitar crédito otra vez.
print(f»Crédito insuficiente: su saldo actual es de {creditos_iniciales} créditos» )
# Los case 2 y 3 son iguales que el case 1, pero con diferentes bases de pizza y precios.
case 2:
print(«______________________DATOS DEL PEDIDO_____________________»)
print(f»Ha seleccionado pizza Boloñesa.\n Total a pagar: {bolonesa} créditos.»)
if creditos_iniciales >= bolonesa:
pedido.append(f»Pizza Base Boloñesa»)
credito -= float(bolonesa)
total += bolonesa
print(f»Su saldo actual es de {round(credito, 2)} créditos.»)
break
else:
print(f»Crédito insuficiente: su saldo actual es de {creditos_iniciales} créditos» )
case 3:
print(«______________________DATOS DEL PEDIDO_____________________»)
print(f»Ha seleccionado pizza Cuatro Quesos.\n Total a pagar: {cuatro_quesos} créditos.»)
if credito >= cuatro_quesos:
print(f»Su saldo actual es de {round(credito, 2)} créditos.»)
pedido.append(«Pizza Base Cuatro Quesos»)
credito -= float(cuatro_quesos)
total += cuatro_quesos
print(f»Su saldo actual es de {round(credito, 2)} créditos.»)
break
else:
print(f»Crédito insuficiente: su saldo actual es de {creditos_iniciales} créditos» )
case _: # Si se selecciona una opción no contemplada, se solicita volver a intentarlo:
print(«\n\n\n——–¡ERROR! :SELECCIONE UN VALOR DEL 1 AL 3———–\n»)
while True: # Tercer bucle: este bucle establece los ingredientes extras:
if credito >= lista_extras[0]: # Comprueba que tenga crédito suficiente (al menos parar el ingrediente extra más económico)
ingrediente_extra = input(«¿Desea algún ingrediente extra?\n SI\n NO\n»).upper() # Si dispone de crédito, se le pregunta si desea un ingrediente extra:
if ingrediente_extra == «SI» or ingrediente_extra == «S»: # El usuario podrá contestar si, Si, SI, sI, s, S.
# Se muestran los ingredientes y sus precios.
print(«_______________INGREDIENTES EXTRA DISPONIBLES________________\n»)
print(f» 1- Extra de queso: {queso} créditos»)
print(f» 2- Champiñones: {champinon} créditos»)
print(f» 3- Tomate natural: {tomate_natural} créditos»)
print(«\n————— 0 ——————\n»)
print(f»Saldo actual: {round(credito,2)} créditos») # Se informa del crédito disponible actualmente.
eleccion = float(input(«Seleccione un ingrediente extra:\n»)) #Se solicita una elección de ingrediente.
match eleccion: # Según la elección del cliente se le informa del ingrediente seleccionado y del coste del mismo.
case 1:
print(«______________________DATOS DEL PEDIDO_____________________»)
print(f»Ha seleccionado Extra de queso.\nEl ingrediente extra tiene un recargo de {queso} créditos.»)
if credito >= queso: #Comprueba que realmente dispone de suficiente crédito:
pedido.append(«Extra de quesos») # Almacena el ingrediente extra en la lista para generar el ticket:
credito -= float(queso) # Descuenta el valor del ingrediente extra al saldo del cliente.
total += queso # Suma el coste del ingrediente extra al total de gastos del cliente.
print(f»Su saldo actual es de {round(credito, 2)} créditos, el coste actual de su pedido es: {round(total,2)} créditos.»)
#Informa al usuario de los créditos de su saldo y el coste actual del pedido.
continue
else: # Si no dispone de saldo suficiente para este ingrediente extra, se le informa, y se recuerda el saldo actual del usuario.
print(f»Crédito insuficiente para adquirir un ingrediente extra: su saldo actual es de {creditos_iniciales} créditos» )
break
# Los case 2 y 3 son iguales que el case 1 pero con diferentes ingredientes y precios.
case 2:
print(«______________________DATOS DEL PEDIDO_____________________»)
print(f»Ha seleccionado Extra de champiñones.\nEl ingrediente extra tiene un recargo de {champinon} créditos.»)
if credito >= champinon:
pedido.append(«Extra de Champiñones»)
credito -= float(champinon)
total += champinon
nuevo_total = total
print(f»Su saldo actual es de {round(credito, 2)} créditos, el coste actual de su pedido es: {round(total,2)} créditos.»)
continue
else:
print(f»Crédito insuficiente para adquirir un ingrediente extra: su saldo actual es de {creditos_iniciales} créditos» )
break
case 3:
print(«______________________DATOS DEL PEDIDO_____________________»)
print(f»Ha seleccionado Extra de tomate natural.\nEl ingrediente extra tiene un recargo de {tomate_natural} créditos.»)
if credito >= tomate_natural:
pedido.append(«Extra de tomate natural»)
credito -= float(tomate_natural)
total += tomate_natural
nuevo_total = total
print(f»Su saldo actual es de {round(credito, 2)} créditos, el coste actual de su pedido es: {round(total,2)} créditos.»)
continue
else:
print(f»Crédito insuficiente para adquirir un ingrediente extra: su saldo actual es de {creditos_iniciales} créditos» )
break
case _: # Si se selecciona una opción no contemplada, se solicita volver a intentarlo:
print(«Seleccione un valor comprendido entre 1 y 3»)
continue
if ingrediente_extra == «NO» or ingrediente_extra == «N»: # Si el usuario no desea más ingredientes, se finaliza el bucle y se pasa al resumen e impresión del ticket (puede responder con no, No, NO, nO, n, N)
print(f»\nEl coste total de su pedido es de {round(total,2)} créditos\nDispone de un saldo a su favor de {round(credito)} créditos\n¡Buen provecho!»)
break
else:
print(«Parámetro incorrecto, indique Si o No.») # Si el usuario escribe algo no contemplado, le solicita repetir la opción.
continue
else:
print(«Saldo insuficiente para adquirir ingredientes extra:») # Si el usuario no dispone de saldo suficiente para adquirir ningún ingrediente extra, se rompe el bucle y pasa la resumen e impresión de ticket final.
break
# ticket final:
print(«__________________TICKET______________________»)
print(«Pizza Base:»)
# Comprueba la cantidad de elementos que presenta el pedido de cada elemento y los agrupa, sumando su valor total por separado:
if pedido.count(«Pizza Base Margarita») >= 2:
numero_de_margaritas = int((pedido.count(«Pizza Base Margarita»)-1))
print(f»{numero_de_margaritas} Base Pizza Margarita ____________ Total: {round(numero_de_margaritas * margarita,2)} créditos»)
elif pedido.count(«Pizza Base Boloñesa») >= 2:
numero_de_bolonesas = int((pedido.count(«Pizza Base Boloñesa»)-1))
print(f»{numero_de_bolonesas} Base Pizza Boloñesa _____________ Total: {round(numero_de_bolonesas * bolonesa,2)} créditos»)
elif pedido.count(«Pizza Base Cuatro Quesos») >= 2:
numero_de_cuatro_quesos = int((pedido.count(«Pizza Base Cuatro Quesos»)-1))
print(f»{numero_de_cuatro_quesos} Base Pizza Cuatro Quesos ________ Total: {round(numero_de_cuatro_quesos * cuatro_quesos,2)} créditos»)
else:
print(«Ningún pedido solicitado»)
print(«Ingredientes extra:»)
if pedido.count(«Extra de quesos») >= 2:
numero_de_extras_queso = int((pedido.count(«Extra de quesos»)-1))
print(f»{numero_de_extras_queso} Extra de Quesos _________________ Total: {round(numero_de_extras_queso * queso,2)} créditos»)
if pedido.count(«Extra de Champiñones») >= 2:
numero_de_extras_queso = int((pedido.count(«Extra de Champiñones»)-1))
print(f»{numero_de_extras_queso} Extra de Champiñones ____________ Total: {round(numero_de_extras_queso * queso,2)} créditos»)
if pedido.count(«Extra de tomate natural») >= 2:
numero_de_extras_queso = int((pedido.count(«Extra de tomate natural»)-1))
print(f»{numero_de_extras_queso} Extra de tomate natural _________ Total: {round(numero_de_extras_queso * queso,2)} créditos»)
else: #Si no se desean ingredientes extra, o el crédito es insuficiente para seleccionar uno, se indica en el ticket:
print(«Ningún ingrediente extra»)
# Resumen general del estado de coste del pedido y el saldo del cliente.
print (f»\n-Coste total del pedido:___________________ {round(total,2)} créditos.\n-Crédito disponible:_______________________ {round(credito,2)} créditos\n»)
Código para usar while con la lista de países:
# Inicializamos el índice
pais = 0
# Bucle while para iterar a través de la lista de países
while pais < len(paises):
print(paises[pais])
pais += 1
Excelente, gracias
Saludos el projecto de la pizza esta super interesante. Pero luego de haberlo creado y corrido te das cuenta que al principio no hay una instruccion para saber si tiene el dinero disponible para comprar la pizza. El programa te deja correrlo independientemente si no tienes la cantidad completa del dinero y cuando te tira el resultado te da un negativo. Yo estoy preparando el mismo projecto pero con otras instrucciones que antes de que comienze a ejecutar dinero -= pizza o total += pizza el sistema verifica de ante mano si tiene suficiente dinero para comprar. Lo hice con un if preguntadole al programa que si DINERO_INICIAL > pizza(peperoni,queso) entonces puede continuar ejecutando las instrucciones. Pero si el dinero inicial es menor que el costo de la pizza ahi inmediatamente termina el programa con un mensaje que le dice usted no tiene el dinero disponible para comprar la pizza> Si me lo permiten puedo publicar el codigo aqui para el beneficio de los compañeros
Excelente curso gracias
Maestro, este curso cada vez se pone mejor y los ejercicios ni se diga.
Genial. Muchísimas gracias!
Gracias a usted. Tenga un buen día 😀