Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: BigKaz en 14 Diciembre 2016, 03:54 AM

Título: (Python 3.5) 2 veces un input
Publicado por: BigKaz en 14 Diciembre 2016, 03:54 AM
Hola, tengo un error en este codigo.
Código (python) [Seleccionar]
while True:
com = input("Esperando cambio de hora o entrada de administrador, !!buen juego!!: ")
if com == ("admin"):                                                                
limpiar()
menum2()

Funcion menum2:
Código (python) [Seleccionar]
def menum2():
global nm1,ap1,nm2,ap2,nm3,ap3,nm4,ap4 #Declara todas las variables mencionadas a global
print("""MODO ADMINISTRACION TOTAL ACTIVADO:
  Ver MESA 1: vm1
  Ver MESA 2: vm2
  Reiniciar: reinicio
  Ajustar J1 de primera mesa: aj1
  Ajustar J2 de primera mesa: aj2
  Ajustar J1 de segunda mesa: aj3
  Ajustar J2 de segunda mesa: aj4
  Esperar: esperar
  Salir: salir""")
respuad = input("admin: ")
limpiar()
if respuad == ("vm1"):
print (nm1,ap1,"|",nm2,ap2)
input("Presione enter: ")
limpiar()
menum2()
elif respuad == ("vm2"):
print (nm3,ap3,"|",nm4,ap4)
input("Presione enter: ")
limpiar()
menum2()
elif respuad == ("reinicio"):
programa()
elif respuad == ("aj1"):
nm1 = input("PRIMERA MESA: Ingresa nombre de 1er jugador: ")
while (len(nm1)>20) or (not (nm1.isalpha()) or (len(nm1)<=2)):
nm1 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
ap1 = input("PRIMERA MESA: Ingresa apellido de 1er jugador: ")
while (len(ap1)>20) or (not (ap1.isalpha()) or (len(ap1)<=2)):
ap1 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
input("Presione enter: ")
limpiar()
menum2()
elif respuad == ("aj2"):
nm2 = input("PRIMERA MESA: Ingresa nombre de 2do jugador: ")
while (len(nm2)>20) or (not (nm2.isalpha()) or (len(nm2)<=2)):
nm2 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
ap2 = input("PRIMERA MESA: Ingresa apellido de 2do jugador: ")
while (len(ap2)>20) or (not (ap2.isalpha()) or (len(ap2)<=2)):
ap2 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
input("Presione enter: ")
limpiar()
menum2()
elif respuad == ("aj3"):
nm3 = input("SEGUNDA MESA: Ingresa nombre de 1er jugador: ")
while (len(nm3)>20) or (not (nm3.isalpha()) or (len(nm3)<=2)):
nm3 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
ap3 = input("Segunda MESA: Ingresa apellido de 1er jugador: ")
while (len(ap3)>20) or (not (ap3.isalpha()) or (len(ap3)<=2)):
ap3 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
input("Presione enter: ")
limpiar()
menum2()
elif respuad == ("aj4"):
nm4 = input("SEGUNDA MESA: Ingresa nombre de 2do jugador: ")
while (len(nm4)>20) or (not (nm4.isalpha()) or (len(nm4)<=2)):
nm4 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
ap4 = input("SEGUNDA MESA: Ingresa apellido de 2do jugador: ")
while (len(ap4)>20) or (not (ap4.isalpha()) or (len(ap4)<=2)):
ap4 = (input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: "))
limpiar()
input("Presione enter: ")
limpiar()
menum2()
elif respuad == ("esperar"):
limpiar()
com = input("Esperando cambio de hora o entrada de administrador, !!buen juego!!: ")
if com == ("admin"):
limpiar()
menum2()
elif respuad == ("salir"):
quit()
else:
input("Comando invalido, presione enter: ")
limpiar()
menum2()

Al llegar a "Esperando cambio de administrador, buen juego" y poner "admin", no pasa nada y me lo vuelve a mostrar y cuando pongo "admin" esta vez si lo acepta.

Ejemplo:
Código (python) [Seleccionar]
Esperando cambio de hora o entrada de administrador, !!buen juego!!: admin #No pasa nada
Esperando cambio de hora o entrada de administrador, !!buen juego!!: admin #Esta vez si me lleva al menu admin

Porque pasa esto y como lo arreglo?

EDIT: No se porque a python le dan ganas de trollearme, pero no hice nada en el codigo y al poner admin se activaba el menú.
Título: Re: (Python 3.5) 2 veces un input
Publicado por: engel lex en 14 Diciembre 2016, 04:02 AM
pruebo la primera sección de tu código y todo bien...

por qué pones parentesis en todos los strings de los if? es innecesario y hace el codigo confuso, en este codigo si hay un exceso y realmente grande de parentesis que solo dificultan la lectura  :-\
Título: Re: (Python 3.5) 2 veces un input
Publicado por: BigKaz en 14 Diciembre 2016, 04:05 AM
Es que antes estaba convencido de que cada expresion necesitaba un parentesis xDDD

No se porque pero se soluciono magicamente
Título: Re: (Python 3.5) 2 veces un input
Publicado por: engel lex en 14 Diciembre 2016, 04:13 AM
Cita de: BigKaz en 14 Diciembre 2016, 04:05 AM
No se porque pero se soluciono magicamente

se llama mal de técnico XD