Python:如何在while循环中累加变量值得到正确商品总价?
解决Python商品总价累加错误的问题
问题代码
x=int(input("Escribe cantidad de artículos deseas comprar: ")) suma=0 seleccion=0 precio=0 while x>0: seleccion=(input("Dame el nombre de un artículo que deseas comprar: ")) precio=int(input("Dame el precio de dicho artículo: ")) z=precio x=x-1 if seleccion==1: suma = z + z if seleccion > 1: print ("Listo. Haz anotado todos los artículos que deseas comprar") print ("El pago total que tienes que hacer es: ", suma)
运行结果
Escribe cantidad de artículos deseas comprar: 2 Dame el nombre de un artículo que deseas comprar: camisa Dame el precio de dicho artículo: 12 Dame el nombre de un artículo que deseas comprar: short Dame el precio de dicho artículo: 33 El pago total que tienes que hacer es: 0
错误原因
- 判断逻辑完全无效:
seleccion是输入的商品名称(字符串类型,比如"camisa"),但代码里拿它和整数1做相等判断,这个条件永远不会成立,导致suma一直保持初始值0。 - 累加方式错误:就算条件成立,
suma = z + z只是把当前商品价格翻倍,不是累加之前的总价。
修正后的代码
x = int(input("Escribe cantidad de artículos deseas comprar: ")) suma = 0 while x > 0: seleccion = input("Dame el nombre de un artículo que deseas comprar: ") precio = int(input("Dame el precio de dicho artículo: ")) # 核心:将当前商品价格累加到总价中 suma += precio x -= 1 print("Listo. Haz anotado todos los artículos que deseas comprar") print("El pago total que tienes que hacer es: ", suma)
关键修改点
- 移除了无效的
seleccion==1判断逻辑,商品名称不影响总价计算。 - 用
suma += precio实现正确累加(等价于suma = suma + precio),每次把当前商品价格加到总价里。 - 将完成提示移到循环结束后,确保所有商品输入完成后再显示。
内容的提问来源于stack exchange,提问作者Diego Mijares
相关产品推荐
相关产品推荐

