Hola, soy nuevo aquí y en Python he estado estudiando en codecademy y me encanta. Estoy a la mitad del curso, pero tenía una idea para un proyecto que pensé que sería fácil con lo que sé hasta ahora.

Aunque estoy atascado. mi idea es hacer un programa que sume todas mis facturas, por ejemplo, préstamos, tarjetas de crédito, facturas de teléfono.

Quería ponerlo todo en una lista con el nombre de la factura y el monto que costaba, para luego poder sumar todo lo que está en la lista o simplemente seleccionar las facturas.

Mi lista tendrá alrededor de 10 o más elementos, pero tratar de que funcione con 2 por ahora es porque escribo demasiado y no funciona.

Entonces esto es lo que tengo

bills = [['natwest loan', 263.09], ['my phone',  51.50]]
total = bills[0] + bills[1]
print(str(total))

Así que esto solo anuncia ambas partes de la lista juntas, solo quiero agregar los flotadores y obtener un total. Quiero que básicamente esto.

total = 263.09 + 51.50

No puedo entender dónde me estoy equivocando.

Espero haber tenido sentido y gracias por cualquier ayuda.

0
CodeCarl 13 mar. 2021 a las 13:56

4 respuestas

La mejor respuesta

Puedes probar esto -

>>> bills = [['natwest loan', 263.09], ['my phone',  51.50]]
>>> 
>>> total_bills = sum([x[1] for x in bills])
>>> total_bills
314.59
>>> total_bills = str(total_bills)
>>> total_bills
'314.59'
>>> 

Sus facturas están en el second index i.e [1] de cada elemento dentro de su lista bills

Cada elemento dentro de su lista es una entrada individual

Índice 0 -> Decirte para qué es

Índice 1 -> La cantidad

Necesita iterar sobre la lista y solo sumar elementos en el Índice 1

1
Vaebhav 13 mar. 2021 a las 11:02

¡Bienvenido a StackOverflow! Ha escrito una pregunta muy bonita y bien pensada.

El problema en su código es que no está accediendo al valor correcto. Cuando escribes-

bills = [['natwest loan', 263.09], ['my phone',  51.50]]
total = bills[0] + bills[1]

Ahora está accediendo al primer y segundo elemento en bills, que son ['natwest loan', 263.09] y ['my phone', 51.50]. Lo que desea agregar es que para cada uno de estos elementos, desea acceder al segundo elemento en ellos (que son los precios).

bills = [['natwest loan', 263.09], ['my phone',  51.50]]

# The extra [1] here specifies that you want to access the second item of the nested arrays
total = bills[0][1] + bills[1][1]

print(total)
0
Xiddoc 13 mar. 2021 a las 11:01

Lo que quieres será así:

bills = [['natwest loan', 263.09], ['my phone',  51.50]]
total = bills[0][1] + bills[1][1]
print(str(total))

Quiere decirle al código dónde está el valor en la lista. es por eso que usa facturas [0] [1] para decirle al código que el flotador está en el segundo lugar de la lista

0
Quebeh 13 mar. 2021 a las 11:02

El acceso a la lista anidada es incorrecto

Usted puede probar este

Facturas = [['préstamo nacional', 263.09], ['mi teléfono', 51.50]] total = int (facturas [0] [1]) + int (facturas [1] [1]) imprimir (total)

-1
Bob23 13 mar. 2021 a las 11:31