if __name__ == '__main__':
a = bool()
b = bool()
# Se definen las variables que el programa va a utilizar
compuerta = str()
respuesta_not = str()
respuesta_yes = str()
continuar = bool()
error = str()
compuertavalida = bool()
seguir=3
continuar = True
while seguir==3:
# Al principio el programa debe Continuar
print "Buenos Días"
# Mientras que Continuar sea verdadero ejecutará el siguiente programa
compuertavalida = False
while compuertavalida==False:
# Al no haberse introducido ninguna Compuerta esta sera falsa al principio
print "Indique la compuerta lógica a analizar (escriba en mayúsculas)"
# Mientras Que sea falsa el programa preguntara por una nueva Compuerta valida
compuerta = raw_input()
if compuerta=="AND" or compuerta=="OR" or compuerta=="NOT" or compuerta=="YES" or compuerta=="NAND" or compuerta=="NOR" or compuerta=="XOR" or compuerta=="XNOR":
compuertavalida = True
# si se corresponde a una compuerta que exista se marcará como valida
else:
print "Compuerta no válida. Intente de nuevo."
# si no corresponde te preguntarña de nuevo
print "Solo son válidos el número 0 y el 1"
print "Introduzca el número A"
# el programa especifica que solo valen 0 (Falso) y 1 (Verdadero)
a = bool(raw_input())
# el programa pregunta por el número A
print "Introduzca el número B"
# Y el usuario lo introduce
b = bool(raw_input())
# el programa pregunta por el número B
if compuerta=="AND":
print "Compuerta AND"
# según el valor de Compuerta el programa tomará distintas rutas - si esta vale AND
if a==True and b==True:
print "Su salida es 1"
else:
print "su salida es 0"
elif compuerta=="OR":
print "Compuerta OR"
# si esta vale OR
if a==False and b==False:
print "Su salida es 0"
else:
print "Su salida es 1"
elif compuerta=="NOT":
print "Compuerta NOT"
# si esta vale NOT
print "Indique si quiere analizar A o B"
respuesta_not = raw_input()
# Como la Compuerta NOT solo presenta una entrada
if respuesta_not=="A":
# El usuario ha de decidir
print "Compuerta NOT únicamente con A"
# si se decide con A se hará lo siguiente
if a==False:
print "Su salida es 1"
else:
print "Su salida es 0"
else:
print "Compuerta NOT únicamente con B"
# sino se hará lo siguiente
if b==False:
print "Su salida es 1"
else:
print "Su salida es 0"
elif compuerta=="YES":
print "Compuerta YES"
# si esta vale YES
print "Indique si quiere analizar A o B"
respuesta_yes = raw_input()
# Como la Compuerta YES solo presenta una entrada
if respuesta_yes=="A":
# El usuario ha de decidir
print "Compuerta YES únicamente con A"
# si se decide con A se hará lo siguiente
if a==False:
print "Su salida es 0"
else:
print "Su salida es 1"
else:
print "Compuerta YES únicamente con B"
# sino se hará lo siguiente
if b==False:
print "Su salida es 0"
else:
print "Su salida es 1"
elif compuerta=="NAND":
print "Compuerta NAND"
# si esta vale NAND
if a==True and b==True:
print "Su salida es 0"
else:
print "Su salida es 1"
elif compuerta=="NOR":
print "Compuerta NOR"
# si esta vale NOR
if a==False and b==False:
print "Su salida es 1"
else:
print "Su salida es 0"
elif compuerta=="XOR":
print "Compuerta XOR"
# si esta vale XOR
if a==False and b==False or a==True and b==True:
print "Su salida es 0"
else:
print "Su salida es 1"
elif compuerta=="XNOR":
print "Compuerta XNOR"
# si esta vale XNOR
if a==False and b==False or a==True and b==True:
print "Su salida es 1"
else:
print "Su salida es 0"
print "¿Desea realizar otra operación? (1 para Sí, 0 para No)"
continuar = int(raw_input())
if continuar==0:
seguir=4
print"Fin del programa"
# el programa pregunta si queremos realizar otra operación
# el usuario introduce su Respuesta