Python - Error en entrada

Iniciado por Geormarsch, 28 Mayo 2017, 21:16 PM

0 Miembros y 1 Visitante están viendo este tema.

Geormarsch

Tengo un error en cantidad_platos

Cuando saco contadorm del input si funciona...
a que se debe esto?

Código (python) [Seleccionar]

contadorm = 1
contadorp = 1
pagar = []
cantidad_mesas = int(input("Mesas: "))

for a in range(cantidad_mesas):
    contadorm = contadorm + 1
    cantidad_platos = int(input("Cantidad de platos en la mesa",  contadorm))
   
    for b in range(cantidad_platos):
        contadorp = contadorp + 1
        valor_plato = int(input("Valor del plato en la mesa", contadorm)
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

tincopasan

mi pregunta es:
Código (python) [Seleccionar]
cantidad_platos = int(input("Cantidad de platos en la mesa",  contadorm))

¿qué se supone que hace ahí la vartiable?

input es para que el usuario pueda ingresar datos a través del teclado


Geormarsch

Cita de: tincopasan en 28 Mayo 2017, 21:48 PM
mi pregunta es:
Código (python) [Seleccionar]
cantidad_platos = int(input("Cantidad de platos en la mesa",  contadorm))

¿qué se supone que hace ahí la vartiable?

input es para que el usuario pueda ingresar datos a través del teclado

La verdad es que era un contador, para mostrar en que mesa van... pero luego de eso, se sumaría la cantidad total, intenté poner la variable del for que en éste caso es "a"
Código (python) [Seleccionar]
cantidad_platos = int(input("Cantidad de platos en la mesa",  a))

Pero no funciona tampoco...
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

Geormarsch

Código (python) [Seleccionar]
#-*- coding: utf-8 -*-

precio = []

cantidad_mesas = int(input("Número de mesas: "))

for i in range(cantidad_mesas):
    cantidad_platos = int(input("Cantidad de platos en la mesa número: "))
    for x in range(cantidad_platos):
        valor_plato = int(input("Valor de plato de la mesa número: "))
        precio.append(valor_plato)
       
print (precio)   


Hasta el momento lo que hace es solicitar número de mesas, luego preguntar cuantos platos se servirán en cada mesa, luego agregarlos a la lista.

Pero en el primer for, luego de mostrar en pantalla "Cantidad de platos en la mesa número", quisiera que se mostrase 1, luego cuando se complete ese ciclo y vuelva a repetirlo se actualice a la número 2 y así sucesivamente dependiendo de cuantas mesas están actualmente...
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

tincopasan

no se si entendí bien lo que querés hacer, pero me parece que esto te puede servir:
Código (python) [Seleccionar]

#-*- coding: utf-8 -*-
precio = []
cantidad_mesas = int(input("Número de mesas: "))
for i in range(1,cantidad_mesas + 1):
    print("¿Cantidad de platos en la mesa número {}?: ".format(i),end="")
    cantidad_platos = int(input())
    for x in range(1,cantidad_platos +1):
        print("¿Valor de plato {} de la mesa número {}?: ".format(x,i),end="")
        valor_plato = int(input())
        precio.append(valor_plato)
print (precio) 

Sino es eso, perdón, sigo sin entender el planteo!

Geormarsch

Es exactamente lo que intentaba hacer, lo que no entiendo es eso del .format(i), end=""
Muchísimas gracias, te pasaste, pero en programación no hemos visto eso que mencioné anteriormente, por qué no funciona con "cantidad de platos en la mesa número", i???
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

tincopasan

perdón por la demora, me olvidé que iba a contestar.
1)como te dije antes la función input() no soporta mostar variables, ya que no fue hecha para eso.
2)format es una propiedad de las cadenas que permite poner variables
3)end="" es para evitar el salto de línea del print
4)no seas vago, todas estas definiciones abundan en lared!!!
5)podés hacer tus propias funciones, así que en este caso te muestro la función entrada(), que es como lo que buscas hacer, mostrar una cadena,más el input, la hice para que veas la potencia de python-
Código (python) [Seleccionar]

#-*- coding: utf-8 -*-
def entrada(cadena=""):
    print(cadena,end="")
    return input()

contadorm = 1
cantidad_mesas = int(input("Mesas: "))

precio=[]
for a in range(cantidad_mesas):
    cantidad_platos = int(entrada("Cantidad de platos en la mesa {} ".format(contadorm)))
    contadorp = 1   
    for b in range(cantidad_platos):
        valor_plato = int(entrada("Valor del plato {} en la mesa {} ".format(contadorp,contadorm)))
        contadorp = contadorp + 1
        precio.append(valor_plato)
    contadorm = contadorm + 1
print(precio)


es básicamente tu código, con alguna modificación porque está mal la lógica y además la implementación de mi función que reemplaza a input() que es entrada().
Espero lo entiendas fácil, ya que soy un perro explicando.

Saludos.