[ Foro de Python ]
Saludos, por favor necesito que me ayuden a resolver este algoritmo. En la función "atender" me aparece un error, indicando que la lista está vacía. Sé que es porque he utilizado el pop() dos veces, porque hice dos "if", uno que indique si el número es par o impar y el otro que indique si es positivo o negativo. Lo que quiero que aparezca es, por ejemplo: "Es Par y Positivo" ó "Es Impar y negativo", dependiendo del número que ingrese, obviamente. Gracias de antemano
def leerS(texto):
varS=input(texto)
return varS
def leerI(texto):
varI=int(input(texto))
return varI
def cargarcola(cola):
n=leerS("Nombre:")
cola.append(n)
return cola
def cargarpila(pila):
x=leerI("Número:")
pila.append(x)
return pila
def imprimircola(cola):
print(cola)
def imprimirpila(pila):
for i in range(1,len(pila)+1):
print(pila[-i])
def atender(cola,pila):
#Indicando si es par ó impar
print("Atentiendo a:",cola.pop(0))
if(pila.pop()%2==0):
print("Es Par")
else:
print("Es Impar")
#Indicando si es positivo ó negativo
if(pila.pop()>0):
print("Es Positivo")
else:
print("Es Negativo")
def menu():
print("1.-Cargar Cola")
print("2.-Cargar Pila")
print("3.-Imprimir Cola")
print("4.-Imprimir Pila")
print("5.-Atender")
print("0.-Salir")
o=leerI("Elija una opción:")
return o
#Principal
C=[]
P=[]
opcion=10
while(opcion!=0):
opcion=menu()
if(opcion==1):
cargarcola(C)
if(opcion==2):
cargarpila(P)
if(opcion==3):
imprimircola(C)
if(opcion==4):
imprimirpila(P)
if(opcion==5):
atender(C,P)
if(opcion==0):
print("Adiós")
La operación pop() es destructiva, porque elimina el elemento del tope de la pila.
Lo que debes hacer es guardar el valor de pop() en una variable, para poder consultarlo tantas veces como necesites, sin extraer nuevos elementos de la pila.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)