Un dia en el supermercado -Una compra-


#1



https://www.codecademy.com/es/courses/python-beginner-es-mVOwe/2/2?curriculum_id=50fc7aab5fab3aa9c2002444#


Este es un error:
File "python", line 16
return calcularFactura:
^
SyntaxError: invalid syntax

Y tambien me dice: ¡Uy! Probá otra vez. Parece que tu código no funciona cuando ['manzana'] es usado como datos de entrada.


compras = ["banano","naranja","manzana"]

inventario = {"banano": 6,
    "manzana": 0,
    "naranja": 32,
    "pera": 15
    }
    
precios = {"banano": 4,
    "manzana": 2,
    "naranja": 1.5,
    "pera": 3
    }

def calcularFactura(comida):
    for x in compras:
        total = 0 
        total += precios[x]
        print total


#2

Primero, declara total = 0 antes de empazar for y solo agregarlo dentro for. Para terminar la funcion, uso return, no print, fuera de for. Tenga cuidado al tabular.

Prueba su función con print calcularFactura(compras) debajo.


#3

Hola @maximoripani,

La funcion calcularFactura recibe una lista que llamaremos compras en este caso. Por ello, comensamos la definicion de calcularFactura de este modo -- def calcularFactura(compras): -- asi podemos seguir la instruccion presente que dice lo siguiente

Ahora, necesitamos hacer un "total" que empiece con zero de esta forma -- total = 0
La razon que ponemos esta variable antes de nuestro bucle for es porque no queremos que "total" devuelva zero cada vez que la funcion itera (bucle, haga lazo, complete circuito).

De hayi, empezamos nuestro bucle (o circuito) de esta forma for x in compras: -- fijate que nuestra lista es igual a la lista que estamos pasando en la primera linea cuando definimos nuestra funcion, en este caso "compras". Le pasamos "compras" a la funcion, y despues trabajamos con esa misma lista debajo de esa funcion.

Ahora, calculamos el total de este modo: total += precios[x]
Finalmente, queremos regresar el total de este modo: return total

def calcularFactura(compras):
    total = 0
    for x in compras:
        total += precios[1]
    return total

#4

Hey @rickymccallum87, outstanding effort from your part! I'm seriously humbled to see this kind of effort on the web in general!

May I suggest the following: Primero, declara total = 0 antes de empazar el bucle for y despues calcula el "total" de la factura dentro del bucle for.

When you say "solo", it translates as "only". The reader will think that he should declare total "only" within the for loop.


#5

Wow, thank you. It's been years since I had a Spanish class, but I thought I'd try. I meant to say "First, declare total = 0 before beginning the for loop and only add to it inside the for loop."

The code you gave in your post will return the first time through the loop, cutting the function short.


#6

Fixed! Thanks, see you around bud.