Python - ayuda con programa tienda

 
Vista:
sin imagen de perfil
Val: 14
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

ayuda con programa tienda

Publicado por Kevin (5 intervenciones) el 08/11/2020 23:22:54
hola buenas necesito crear una pequeña tienda con los siguientes requerimientos y no puedo avanzar mucho mas que este. me podrían ayudar

La tienda debe contar al menos con 4 departamentos

Cada departamento debe mostrar al menos 10 productos con su descripción y precio.

El cliente no podrá seleccionar mas de 6 productos del mismo tipo y no podrá llevar mas de 10 productos en total.

El cliente deberá ver un subtotal de la compra en esta instancia.

Esto es lo que tengo por el momento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
unidades = 0
total = 0
totalaud= 0
totalcel = 0
totalele = 0
totalcom = 0
subt = 0
producto = 0
precio = 0
loop = 0
#ver que coincidan todos los precios según número, para no tener que pensar como guardar al final
 
def tienda():
 
    print ("Bienvenido a electroventas, por favor indique el departamento que desea visitar")
    print ("1 para audio")
    print ("2 para accesorios de celulares")
    print ("3 para electrodomésticos")
    print ("4 para accesorios de computador")
    dep = input("su elección es " )
    if dep == "1":
        audio()
 
    elif dep == "2":
        celu()
        print ("departamento de accesorios de celulares")
 
    elif dep == "3":
        elect()
        print ("departamento de electrodomésticos")
 
    elif dep == "4":
        compu()
        print ("departamento de accesorios de computador")
 
    else :
        print ("opción no válida, por favor inténtelo nuevamente")
        print ("************************************************")
        tienda()
 
 
def audio():
 
 
    print ("departamento de audio")
    print ("listado de productos")
    print ("1- audífono in-ear Aiwa $10.990")
    print ("2- audífono over-ear Aiwa $14.990")
    print ("3- audífono in-ear Xiaomi $14.990")
    print ("4- audífono in-ear Huawei $19.990")
    print ("5- audífono in-ear Kz $12.990")
    print ("6- audífono in-ear Sony $16.990")
    print ("7- audífono over-ear Sony $19.990")
    print ("8- parlante bluetooth Aiwa $13.990")
    print ("9- parlante bluetooth JBL $19.990")
    print ("10- parlante bluetooth Sony $21.990")
    producto = int(input (" por favor indíquenos el producto que desea comprar "))
    unidades = int(input (" por favor indique la cantidad "))
    if unidades > 6:
        print (" no puede comprar más de 6 unidades de un mismo producto, por favor inténtelo nuevamente")
    else :
        if producto == 1:
            subt = 10990 * unidades
            total = subt
 
        elif producto == 2 :
            subt = 14990 * unidades
            total = subt
 
        elif producto == 3 :
            subt = 14990 * unidades
            total = subt
 
        elif producto == 4 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 5 :
            subt = 12990 * unidades
            total = subt
 
        elif producto == 6 :
            subt = 16990 * unidades
            total = subt
 
        elif producto == 7 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 8 :
            subt = 13990 * unidades
            total = subt
 
        elif producto == 9 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 10 :
            subt = 21990 * unidades
            total = subt
 
        else :
            print ("por favor indique un id de prodúcto válido")
            audio()
 
 
 
 
 
    loop = input ("desea seguir comprando? pulse 1 si desea comprar otro producto, pulse 2 si desea terminar la compra o 3 si desea volver al menú prinicpal ")
    totalaud = total
 
    if (loop == "1"):
        totalaud = total
 
        audio()
 
    elif (loop == "2"):
 
        totalf = total + totalaud + totalcel + totalele + totalcom
        print (" el subtotal para esta compra es ", totalf)
 
    elif (loop == "3"):
        tienda()
 
    else :
        print ("por favor ingresar una opción válida")
 
 
 
 
 
 
 
def celu():
 
    print ("departamento de accesorios de celulares")
    print ("listado de productos")
    print ("1- cargador 15w Aiwa $10.990")
    print ("2- cargador 20w Aiwa $14.990")
    print ("3- cargador 18w Xiaomi $14.990")
    print ("4- cargador 22w Huawei $19.990")
    print ("5- Cable micro USB alternativo $2.990")
    print ("6- Cable micro USB marca $4.990")
    print ("7- Cable USB C alternativo $4.990")
    print ("8- Cable USB C marca $9.990")
    print ("9- Cable lightining alternativo $4.990")
    print ("10- Cable lightining marca $4.990")
    producto = int(input (" por favor indíquenos el producto que desea comprar "))
    unidades = int(input (" por favor indique la cantidad "))
    if unidades > 6:
        print (" no puede comprar más de 6 unidades de un mismo producto, por favor inténtelo nuevamente")
    else :
        if producto == 1:
            subt = 10990 * unidades
            total = subt
 
        elif producto == 2 :
            subt = 14990 * unidades
            total = subt
 
        elif producto == 3 :
            subt = 14990 * unidades
            total = subt
 
        elif producto == 4 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 5 :
            subt = 2990 * unidades
            total = subt
 
        elif producto == 6 :
            subt = 4990 * unidades
            total = subt
 
        elif producto == 7 :
            subt = 4990 * unidades
            total = subt
 
        elif producto == 8 :
            subt = 9990 * unidades
            total = subt
 
        elif producto == 9 :
            subt = 4990 * unidades
            total = subt
 
        elif producto == 10 :
            subt = 9990 * unidades
            total = subt
 
        else :
            print ("por favor indique un id de prodúcto válido")
            celu()
 
 
 
    loop = input ("desea seguir comprando? pulse 1 si desea comprar otro producto, pulse 2 si desea terminar la compra o 3 si desea volver al menú prinicpal ")
    total = total + subt + total
    if (loop == "1"):
        celu()
 
    elif (loop == "2"):
 
        print (" el subtotal para esta compra es ", totalf)
 
    elif (loop == "3"):
        tienda()
 
    else :
        print ("por favor ingresar una opción válida")
 
def elect():
 
    print ("departamento de electrodomésticos")
    print ("listado de productos")
    print ("1- plancha a vapor Valory $10.990")
    print ("2- plancha a vapor Somela $14.990")
    print ("3- juguera Valory $14.990")
    print ("4- juguera Somela $19.990")
    print ("5- cafetera Valory $12.990")
    print ("6- cafetera Somela $16.990")
    print ("7- cafetera Thomas $19.990")
    print ("8- hervidor Valory $13.990")
    print ("9- hervidor Somela $19.990")
    print ("10- hervidor Thomas $21.990")
    producto = int(input (" por favor indíquenos el producto que desea comprar "))
    unidades = int(input (" por favor indique la cantidad "))
    if unidades > 6:
        print (" no puede comprar más de 6 unidades de un mismo producto, por favor inténtelo nuevamente")
    else :
        if producto == 1:
            subt = 10990 * unidades
            total = subt
 
        elif producto == 2 :
            subt = 14990 * unidades
            total = subt
 
        elif producto == 3 :
            subt = 14990 * unidades
            total = subt
 
        elif producto == 4 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 5 :
            subt = 12990 * unidades
            total = subt
 
        elif producto == 6 :
            subt = 16990 * unidades
            total = subt
 
        elif producto == 7 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 8 :
            subt = 13990 * unidades
            total = subt
 
        elif producto == 9 :
            subt = 19990 * unidades
            total = subt
 
        elif producto == 10 :
            subt = 21990 * unidades
            total = subt
 
        else :
            print ("por favor indique un id de prodúcto válido")
            elect()
 
 
 
    loop = input ("desea seguir comprando? pulse 1 si desea comprar otro producto, pulse 2 si desea terminar la compra o 3 si desea volver al menú prinicpal ")
    total = subt + total
    if (loop == "1"):
        elect()
 
    elif (loop == "2"):
 
        print (" el subtotal para esta compra es ", total)
 
    elif (loop == "3"):
        tienda()
 
    else :
        print ("por favor ingresar una opción válida")
 
def compu():
 
    print ("departamento de accesorios de computador")
    print ("listado de productos")
    print ("1- mouse usb básico $3.990")
    print ("2- mouse inalámbrico básico $4.990")
    print ("3- mouse usb Kensington $6.990")
    print ("4- mouse inalámbrico Kensington $9.990")
    print ("5- mousepad ganérico $2.990")
    print ("6- mousepad Kensington $4.990")
    print ("7- pendrive 16gb $3.990")
    print ("8- pendrive 32gb $6.990")
    print ("9- pendrive 64gb $9.990")
    print ("10- kit 3 pendrive 32gb $15.990")
    producto = int(input (" por favor indíquenos el producto que desea comprar "))
    unidades = int(input (" por favor indique la cantidad "))
    if unidades > 6:
        print (" no puede comprar más de 6 unidades de un mismo producto, por favor inténtelo nuevamente")
    else :
        if producto == 1:
            subt = 3990 * unidades
            total = subt
 
        elif producto == 2 :
            subt = 4990 * unidades
            total = subt
 
        elif producto == 3 :
            subt = 6990 * unidades
            total = subt
 
        elif producto == 4 :
            subt = 9990 * unidades
            total = subt
 
        elif producto == 5 :
            subt = 2990 * unidades
            total = subt
 
        elif producto == 6 :
            subt = 4990 * unidades
            total = subt
 
        elif producto == 7 :
            subt = 3990 * unidades
            total = subt
 
        elif producto == 8 :
            subt = 6990 * unidades
            total = subt
 
        elif producto == 9 :
            subt = 9990 * unidades
            total = subt
 
        elif producto == 10 :
            subt = 15990 * unidades
            total = subt
 
        else :
            print ("por favor indique un id de prodúcto válido")
            compu()
 
 
 
    loop = input ("desea seguir comprando? pulse 1 si desea comprar otro producto, pulse 2 si desea terminar la compra o 3 si desea volver al menú prinicpal ")
    total = subt + total
    if (loop == "1"):
        compu()
 
    elif (loop == "2"):
 
        print (" el subtotal para esta compra es ", total)
 
    elif (loop == "3"):
        tienda()
 
    else :
        print ("por favor ingresar una opción válida")
 
 
tienda()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ayuda con programa tienda

Publicado por Anikollaste (118 intervenciones) el 09/11/2020 12:54:24
Hola Kevin.
Para empezar te muestro como con un print(""" """) es suficiente para mostrar varias líneas de texto.
Me parece que hay algún error (El cliente no podrá seleccionar mas de 6 productos del mismo tipo y no podrá llevar mas de 10 productos en total.) dice mas de 6 Productos pero tal como está el código no permite mas de 6 unidades.
Con un solo print muestra menú, artículos...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
unidades = 0
total = 0
totalaud= 0
totalcel = 0
totalele = 0
totalcom = 0
subt = 0
producto = 0
precio = 0
loop = 0
 
def tienda():
	print ("""Bienvenido a electroventas, por favor indique el departamento que desea visitar
    1 para audio
    2 para accesorios de celulares
    3 para electrodomésticos
    4 para accesorios de computador""")
	dep = input("su elección es: " )
	if dep == "1":
		audio()
 
	elif dep == "2":
		celu()
 
	elif dep == "3":
		elect()
 
	elif dep == "4":
		compu()
 
	else :
		print ("""opción no válida, por favor inténtelo nuevamente
************************************************""")
		tienda()
 
def audio():
    print ("""\ndepartamento de audio
    listado de productos
    1- audífono in-ear Aiwa $10.990
    2- audífono over-ear Aiwa $14.990
    3- audífono in-ear Xiaomi $14.990
    4- audífono in-ear Huawei $19.990
    5- audífono in-ear Kz $12.990
    6- audífono in-ear Sony $16.990
    7- audífono over-ear Sony $19.990
    8- parlante bluetooth Aiwa $13.9990
    9- parlante bluetooth JBL $19.990
    10- parlante bluetooth Sony $21.990""")
 
    producto = int(input ("\nPor favor indíquenos el producto que desea comprar "))
    unidades = int(input ("Por favor indique la cantidad "))
 
    if unidades > 6:
        print ("\nNo puede comprar más de 6 unidades de un mismo producto, por favor inténtelo nuevamente")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

ayuda con programa tienda

Publicado por Kevin (5 intervenciones) el 09/11/2020 14:09:35
Muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ayuda con programa tienda

Publicado por tincopasan (1082 intervenciones) el 09/11/2020 14:07:45
la verdad que es muy dificil ayudarte, por varios motivos, el fundamental es tu lógica de estructura de código. además tampoco sabemos cuanto has visto de python, por lo que se ve, no has llegado a clases, manejo de errores,limpiar pantalla, entornos gráficos,etc.
voy a suponer que por lo menos sabés de listas y diccionarios, porque sino es así, este es un proyecto bastante límitado para hacer correctamente.
Cuando pongas código, no es necesario el espaciado entre líneas, son 376 para algo muy básico, es demasiado, más allá de tu repetición de código. Lo que si te voy a reconocer es que te esforzaste en escribir algo medianamente funcional, cosa que hace mucho ha desaparecido en esta pagina y vienen a pedir todo servido sin intentar nada.
te voy a mostrar una forma básica de hacer todo lo que estás buscando, no es la única ni la mejor, traté de hacerlo simple en base a bucles y listas, pero tampoco me gusta escribir tanto código cuando se podría hacer mucho mejor. Igual solo son 10 minutos, pero está muy feo, aunque funcional, no lo he probado a full, eso te toca a vos y cualquier duda puntual consulta.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#-*- coding: utf - 8 -*-
productos=[]
compras = 10
 
aud =[["audífono in-ear Aiwa",10990],["audífono over-ear Aiwa",14990],["audífono in-ear Xiaomi",14990],
        ["audífono in-ear Huawei",19990],["audífono in-ear Kz",12990],["audífono in-ear Sony",16990],
        ["audífono over-ear Sony",19990],["parlante bluetooth Aiwa",13990],["parlante bluetooth JBL",19990],["parlante bluetooth Sony",21990],[6]]
 
cel = [["cargador 15w Aiwa",10990],["cargador 20w Aiwa",14990],["cargador 18w Xiaomi",14990],
        ["cargador 22w Huawei",19990],["Cable micro USB alternativo",2990],["Cable micro USB marca",4990],
        ["Cable USB C alternativo",4990],["Cable USB C marca",9990],["Cable lightining alternativo",4990],["Cable lightining marca",4990],[6]]
 
ele = [["plancha a vapor Valory",10990],["plancha a vapor Somela",14990],["juguera Valory",14990],
                    ["juguera Somela",19990],["cafetera Valory",12990],["cafetera Somela",16990],
                    ["cafetera Thomas",19990],["hervidor Valory",13990],["hervidor Somela",19990],["hervidor Thomas",21990],[6]]
 
com=[["mouse usb básico",3990],["mouse inalámbrico básico",4990],["mouse usb Kensington",6990],
             ["mouse inalámbrico Kensington",9990],["mousepad genérico",2990],["mousepad Kensington",3990],
             ["pendrive 16gb",6990],["pendrive 32gb",6990],["pendrive 64gb",9990],["kit 3 pendrive 32gb ",15990],[6]]
 
def verificadep(lista):
    disponible = 0
    if lista[10][0]> 0:
        disponible=lista[10][0]
    return disponible
 
def verificacompras(hay):
    posibles = 0
    if hay > 0:
        posibles = hay
    return posibles
 
 
def comprar(lista):
    global compras
    print("Listado de Productos")
    for x in range(10):
        print(f"{x+1} {lista[x][0]} {lista[x][1]}")
 
    while True:
        if lista[10][0] > 0 and compras > 0:
 
            acepta = input("\n¿Desea realizar una compra? S = Si / N = No >> ").lower()
            if acepta == "s":
                producto = input ("\nPor favor indíquenos el id del producto que desea comprar: ")
                stock = verificadep(lista)
                quedan= verificacompras(compras)
 
                if producto in ["1","2","3","4","5","6","7","8","9","10"]:
                    id=int(producto)
                    unidades = input("Por favor indique la cantidad que desea y debe ser menor a 7: ")
                    while unidades not in "123456":
                        unidades = input("Por favor indique la cantidad correcta: ")
                    unidades=int(unidades)
 
                    if stock >= unidades <= quedan  :
 
                        articulo = [lista[id -1][0],lista[id-1][1]]
                        articulo.append(unidades)
                        productos.append(articulo)
                        lista[10][0] -= unidades
                        compras -= unidades
                        print("Item \tArtículo\t\t\tCosto\tCantidad\tSubtotal ")
                        total = 0
                        for x in range(len(productos)):
                            print(f"{x+1}\t{productos[x][0]:<30}\t{productos[x][1]}\t\t{productos[x][2]}\t{productos[x][1]*productos[x][2]} ")
                            total+= productos[x][1]*productos[x][2]
                        print(f"\t\t\t\t\t\t\tTotal=  {total}")
                    else:
                        if unidades > stock:
                            print(f"Solo dispone de {stock} artículos de este departamento para la compra")
                        elif unidades > compras:
                            print(f"Solo dispone de {quedan} en total para la compra")
                else:
                    print("Por favor indique un id de producto válido")
 
 
            elif acepta == "n":
                print("Compra candelada\n")
                return
            else:
                print("Opción incorrecta")
                return
        else:
            if lista[10][0] == 0:
                print("No puede realizar más compras en ese departamento")
                return
            if compras == 0:
                print("No puede realizar más compras de artículos")
                return
 
def tienda():
    departamentos={"1":[aud,"audio"],"2":[cel,"celulares"],"3":[ele,"electrodomésticos"],"4":[com,"computación"]}
    while True:
        print ("""Bienvenido a electroventas, por favor indique el departamento que desea visitar
        1- para audio
        2- para accesorios de celulares
        3- para electrodomésticos
        4- para accesorios de computador
        5- Terminar\n""")
        dep = input("Su elección es: " )
        if dep in "1234":
            elegido = departamentos.get(dep)
            print("")
            print("Departamento de ",elegido[1])
            comprar(elegido[0])
        elif dep == "5":
            print ("Programa terminado")
            break
        else:
            print ("Opción no válida, por favor inténtelo nuevamente")
            print("*"*50)
 
tienda()

como verás es mucho menos código y sobre todo con menos repeticiones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 14
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

ayuda con programa tienda

Publicado por Kevin (5 intervenciones) el 09/11/2020 14:10:18
de verdad muchas gracias, tal como adivinaste no me han pasado mucho en clases e intente de todo para hacerlo funcionar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 21 puestos en Python (en relación al último mes)
Gráfica de Python

ayuda con programa tienda

Publicado por Jonathan (1 intervención) el 10/11/2020 14:50:51
muchas gracias por la respuesta, realicé un par de ajustes pequeños y quedó perfecto, pero en gran parte con la base que dejaste.

PD: soy compañero de Kevin.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar