Stack Overflow en español Asked by Adrián P.L. on February 17, 2021
Me gustaría tomar todos los valores de una compra y dar el valor total de la compra aplicandole el IVA.
def get_factura ():
factura=[]
while factura != 'salir':
producto = input('Producto: ')
precio = float(input('Precio sin IVA: '))
print(f'El producto {producto} tiene un precio sin IVA de {precio}')
factura.append(precio)
return factura
listado_compra=get_factura()
print(listado_compra)
def factura_IVA(factura):
total = 0.0
for precio in factura:
total+= precio
precios=round(total+0.21*total,2)
return precios
precio_total = factura_IVA(listado_compra)
print(f'La factura total con IVA es de {precio_total} €')
El problema es que estoy realizando un loop con while y no se corta cuando le escribo salir.
¿Cuál es mi error?
Gracias de antemano.
Según el código que has adjuntado tienes varios errores.
factura
es una lista, por lo cual se usa el operador in
para comprobar si el valor existe.factura
nunca va a contener el valor salir, ya que solo le estas añadiendo el precio.La solución que te propongo seria usar un flag para comprobar si el valor introducido es igual a salir
lo que hará salir del bucle y seguir con las siguientes instrucciones.
Código:
def get_factura ():
factura=[]
salir = True #Flag para indicar cuando salir
while salir:
producto = input('Producto: ')
if producto == 'salir':
# Simplemente salimos del loop
salir = False
else:
# Seguimos con el programa
precio = float(input('Precio sin IVA: '))
print(f'El producto {producto} tiene un precio sin IVA de {precio}')
factura.append(precio)
return factura
listado_compra=get_factura()
print(listado_compra)
Correct answer by Eugeni Bejan on February 17, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP