Leon Rivera's profile

Programa de Python que calcula relaciones de conjuntos

#Programa para calcular relaciones de conjuntos

#importaciones
import random
#listas/conjuntos
A = []
#menú
t_conjunto = int(
  input("¿De que tamaño desea la lista?: "))  #guardara el tamaño de la lista
while t_conjunto < 1:
  t_conjunto = int(
    input(
      "El numero de elementos es muy bajo, porfavor ingrese un número del 1 al 20: "
    ))
while t_conjunto > 20:
  t_conjunto = int(
    input(
      "El numero de elementos es muy alto, porfavor ingrese un número del 1 al 20: "
    ))
print("1 --- manual")  #marcara si sera de forma manual
print("2 --- aleatorio")  #marcara si sera de forma aleatoria
opcion = int(input("Ingrese la opción que desea: "))  #guarda la opcion deseada
while opcion != 1 and opcion != 2:
  opcion = int(
    input(
      "La opción que ingreso no existe, favor de ingresar una opción existente: "
    ))
#selección de elementos de forma manual
if opcion == 1:
  for c in range(1, t_conjunto + 1):
    elementos = int(input(
      f"Dame valor para el elemento número {c}: "))  #guarda los elementos
    while elementos < 1:
      elementos = int(
        input(
          "El número de elemento es muy bajo, favor de agregar un numero del 1 al 50: "
        ))
    while elementos > 50:
      elementos = int(
        input(
          "El número de elemento es muy alto, favor de agregar un numero del 1 al 50: "
        ))
    A.append(elementos)  #añade los elementos a la lista
  #endfor
#endif
#selección de elementos de forma aleatoria
elif opcion == 2:
  for c in range(t_conjunto):
    aleatorio = random.randint(1, 50)  #guarada elementos de forma aleatoria
    A.append(aleatorio)  #añade los elementos a la lista
  #endfor
#endelif
#imprime el conjunto A
print("El conjunto A = ", A)
#calculo de AxA
mylist = A, A
p_cartesiano = [(x, y) for x in mylist[0] for y in mylist[1]]
print("El producto cartesiano (AxA) es =", p_cartesiano)
#menú de operaciones
print("MENÚ DE OPERACIONES")
print("1 ---> Mayor que \n2 ---> Igual \n3 ---> Suma par")
op_menu = int(input("Por favor ingrese el número de la operación deseada: "))
#mayor que
if op_menu == 1:
  relacion = [], []
  tamaño = len(p_cartesiano)  #obtiene el tamaño de la lista
  print("Los conjuntos de AxA que cumplen con el MAYOR QUE son:")
  for i in range(0, tamaño):
    X = p_cartesiano[i][0]
    Y = p_cartesiano[i][1]
    mayor = X, Y
    if p_cartesiano[i][0] > p_cartesiano[i][1]:
      relacion[0].append(X)
      relacion[1].append(Y)
      print(mayor)
#igual
elif op_menu == 2:
  relacion = [], []
  tamaño = len(p_cartesiano)  #obtiene el tamaño de la lista
  print("Los conjuntos de AxA que cumplen con el IGUAL son:")
  for i in range(0, tamaño):
    X = p_cartesiano[i][0]
    Y = p_cartesiano[i][1]
    igual = X, Y
    if p_cartesiano[i][0] == p_cartesiano[i][1]:
      relacion[0].append(X)
      relacion[1].append(Y)
      print(igual)
#suma par
elif op_menu == 3:
  relacion = [], []
  tamaño = len(p_cartesiano)  #obtiene el tamaño de la lista
  print("Los conjuntos de AxA que cumplen con el SUMA PAR son:")
  for i in range(0, tamaño):
    X = p_cartesiano[i][0]
    Y = p_cartesiano[i][1]
    sum_par = X, Y
    par = p_cartesiano[i][0] + p_cartesiano[i][1]
    if par % 2 == 0:
      relacion[0].append(X)
      relacion[1].append(Y)
      print(sum_par)
print("")
#reflexividad
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
  n = relacion[0][i]  #valor n base que se deb relacionar con otro n
  for k in range(0, lenght):
    if relacion[1][k] == n and relacion[0][
        k] == n:  #buscamos los n en la lista los cuales podrian estar asociados con un numero igual a n par que sea reflexiva
      cont = cont + 1
n_tamaño = len(A)
if cont >= n_tamaño:  #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
  print("Reflexiva")
else:
  print("No Reflexiva")
#simétrica
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
  a = relacion[0][i]  #un valor de la primera casilla sera igual a a
  b = relacion[1][i]  #un valor de la segunda casilla será igual a b
  for k in range(0, lenght):
    if relacion[0][k] == b and relacion[1][
        k] == a:  #debe de haber un valor en la primera casilla que sea igual que b y a su vez que este coincida con un valor de la segunda casilla que sea a
      cont = cont + 1  #si la conidicon anterior se cumple, se sumara al contador que nos da a netender cuantas veces se cumple tal conidicon
n_tamaño = len(A)
if cont >= n_tamaño:  #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
  print("Simétrica")
else:
  print("No Simétrica")
#transitiva
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
  a = relacion[0][i]
  b = relacion[1][i]
  for l in range(0, lenght):
    if relacion[0][l] == b:
      c = relacion[1][
        l]  #así se cualcula c, debido a que este en primera instancia debe de estar relacionado con b de maner forzosa
  for k in range(0, lenght):
    if relacion[0][k] == a and relacion[1][k] == c:  #si hay un punto en el que estos dos valores coinicden, se tomara como una coinicdencia transitiva
      cont = cont + 1
      k = lenght
          
n_tamaño = len(A)
if cont >= n_tamaño:  #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
  print("Transitiva")
else:
  print("No Transitiva")

Programa de Python que calcula relaciones de conjuntos
Published:

Programa de Python que calcula relaciones de conjuntos

Published: