How can I print my code without duplicating the last input?

Viewed 29
N = int(input("Digite la cantidad de Artículos a facturar: "))
dataProd = ('Código', 'Nombre', 'Cantidad', 'Valor unitario', 'Tipo de IVA')
listdataProd = []
compra = {}
acuSubTotal= 0
acuIvatotal= 0
acuTotalprod= 0

for item in range(N):
listdataProd = []
for dato in dataProd:
  listdataProd.append(input(f"Digite el {dato} del producto {item + 1}: "))

compra[item+1] = listdataProd

compra[item+1].append(int(compra[item+1][2]) * int(compra[item+1][3]))

iva = (0, 0.05, 0.19)
if int(compra[item+1][4]) == 1:
  compra[item+1].append(float(compra[item+1][5]) * iva[0])
elif int(compra[item+1][4]) == 2:
  compra[item+1].append(float(compra[item+1][5]) * iva[1])
else:
  compra[item+1].append(float(compra[item+1][5]) * iva[2])

compra[item+1].append(int(compra[item+1][5]) + int(compra[item+1][6]))  

acuSubTotal += compra[item+1][5]
acuIvatotal += compra[item+1][6]
acuTotalprod += compra[item+1][7]



print("\n****************")
print("Detalles de la compra: ")
print("****************")

  


for i in range(N):
print(f"\nCodigo del Producto {i + 1}: ", compra[item+1][0])
print(f"Nombre del Producto {i + 1}: ", compra[item+1][1])
print(f"Cantidad del Producto {i + 1}: ", compra[item+1][2])
print(f"Valor Unitario del Producto {i + 1}: ", compra[item+1][3])
print(f"Tipo de Iva del Producto {i + 1}: ", compra[item+1][4])
print(f"Subtotal del Producto {i + 1}: ", compra[item+1][5])
print(f"Iva del Producto {i + 1}: ", compra[item+1][6])
print(f"Valor Total del Producto {i + 1}: ", compra[item+1][7])

  

print("\n****************")
print("Totales de la compra: ")
print("****************")
print("SubTotal de la compra: ", acuSubTotal)
print("IVA Total de la compra: ", acuIvatotal)
print("Total de la compra: ", acuTotalprod)

Hi! Im just getting started on the coding world and now I'm in a bit a pickle. When I print the outgoing information is only showing the last input requested N times, at the end of the code the math is adding up, so I know for sure all the information is in the dictionary but it is just not properly printing! I'm reading you guys! Thanks!!

1 Answers

You should fix some indentations in the code and all the product inputs should go inside the loop. If you want only the total sum (last 3 lines), you can remove all 8 print statements inside the loop:

N = int(input("Digite la cantidad de Artículos a facturar: "))
dataProd = ('Código', 'Nombre', 'Cantidad', 'Valor unitario', 'Tipo de IVA')
compra = {}
acuSubTotal= 0
acuIvatotal= 0
acuTotalprod= 0

print("\n****************")
print("Detalles de la compra: ")
print("****************")

for item in range(N):
    listdataProd = []
    for dato in dataProd:
        listdataProd.append(input(f"Digite el {dato} del producto {item + 1}: "))

    compra[item+1] = listdataProd

    compra[item+1].append(int(compra[item+1][2]) * int(compra[item+1][3]))

    iva = (0, 0.05, 0.19)
    if int(compra[item+1][4]) == 1:
        compra[item+1].append(float(compra[item+1][5]) * iva[0])
    elif int(compra[item+1][4]) == 2:
        compra[item+1].append(float(compra[item+1][5]) * iva[1])
    else:
        compra[item+1].append(float(compra[item+1][5]) * iva[2])

    compra[item+1].append(int(compra[item+1][5]) + int(compra[item+1][6]))  

    print(f"\nCodigo del Producto {item + 1}: ", compra[item+1][0])
    print(f"Nombre del Producto {item + 1}: ", compra[item+1][1])
    print(f"Cantidad del Producto {item + 1}: ", compra[item+1][2])
    print(f"Valor Unitario del Producto {item + 1}: ", compra[item+1][3])
    print(f"Tipo de Iva del Producto {item + 1}: ", compra[item+1][4])
    print(f"Subtotal del Producto {item + 1}: ", compra[item+1][5])
    print(f"Iva del Producto {item + 1}: ", compra[item+1][6])
    print(f"Valor Total del Producto {item + 1}: ", compra[item+1][7],'\n')

    acuSubTotal += compra[item+1][5]
    acuIvatotal += compra[item+1][6]
    acuTotalprod += compra[item+1][7]

print("\n****************")
print("Totales de la compra: ")
print("****************")
print("SubTotal de la compra: ", acuSubTotal)
print("IVA Total de la compra: ", acuIvatotal)
print("Total de la compra: ", acuTotalprod)

Example run:

Digite la cantidad de Artículos a facturar: 2

****************
Detalles de la compra: 
****************
Digite el Código del producto 1: 2
Digite el Nombre del producto 1: EEE123
Digite el Cantidad del producto 1: 2
Digite el Valor unitario del producto 1: 3
Digite el Tipo de IVA del producto 1: 3

Codigo del Producto 1:  2
Nombre del Producto 1:  EEE123
Cantidad del Producto 1:  2
Valor Unitario del Producto 1:  3
Tipo de Iva del Producto 1:  3
Subtotal del Producto 1:  6
Iva del Producto 1:  1.1400000000000001
Valor Total del Producto 1:  7 

Digite el Código del producto 2: 2
Digite el Nombre del producto 2: BBB123
Digite el Cantidad del producto 2: 2
Digite el Valor unitario del producto 2: 5
Digite el Tipo de IVA del producto 2: 3

Codigo del Producto 2:  2
Nombre del Producto 2:  BBB123
Cantidad del Producto 2:  2
Valor Unitario del Producto 2:  5
Tipo de Iva del Producto 2:  3
Subtotal del Producto 2:  10
Iva del Producto 2:  1.9
Valor Total del Producto 2:  11 


****************
Totales de la compra: 
****************
SubTotal de la compra:  16
IVA Total de la compra:  3.04
Total de la compra:  18
Related