Advertisement
juxtapositions

Untitled

Nov 19th, 2022
694
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.56 KB | None | 0 0
  1. import numpy as np
  2.  
  3. r = 4
  4. r2 = 4
  5. minim = 0
  6. maxim = 100
  7. matrix_size = 4
  8.  
  9. """Проверка на простое число"""
  10. def p(x):
  11.     return x > 1 and all(x % i != 0 for i in range(2, int(x ** 0.5) + 1))
  12.  
  13. """Если неизвестная команда"""
  14. def unknown_command():
  15.     print("Unknown command!. List of available commands")
  16.     print("================================================================")
  17.     print("manual - Create a square matrix with manual filling")
  18.     print("random - Create a square matrix with filling automatically")
  19.     print("off - close and exit")
  20.  
  21. """Помощь по командам программы """
  22. def help():
  23.     print("List of available commands")
  24.     print("================================================================")
  25.     print("manual - Create a square matrix with manual filling")
  26.     print("random - Create a square matrix with filling automatically")
  27.     print("off - close and exit")
  28.  
  29. """Проверка на правильность значений"""
  30. def correct_input(input_row, matrix_size):
  31.     try:
  32.         correct = list(map(int, input_row))
  33.         if len(correct) != matrix_size:
  34.             print(f"Error: The row must have {matrix_size} elements")
  35.             return False
  36.         for i in correct:
  37.             if i > maxim or i < minim:
  38.                 print(
  39.                     f"Error: All matrix elements must be integers "
  40.                     f"in range "
  41.                     f"[{minim}, {maxim}]"
  42.                 )
  43.                 return
  44.     except ValueError:
  45.         print(
  46.             f"Error: All matrix elements must be integers "
  47.             f"in range [{minim}, {maxim}]"
  48.         )
  49.         return False
  50.  
  51.     return correct
  52.  
  53. """Заполнение вручную"""
  54. def manual_input(matrix_size):
  55.     error = False
  56.     manual_matrix = []
  57.     print("==============start==============")
  58.     for row in range(matrix_size):
  59.         while True:
  60.             try:
  61.                 if error:
  62.                     print("==============start==============")
  63.                     for i in manual_matrix:
  64.                         print(*i, sep=" ")
  65.                 input_row = input("").split()
  66.             except KeyboardInterrupt:
  67.                 print("Error: incorrect input, try again")
  68.                 continue
  69.             except EOFError:
  70.                 print("Error: incorrect input, try again")
  71.                 continue
  72.             correct = correct_input(input_row, matrix_size)
  73.             if not correct:
  74.                 print("re-enter the line")
  75.                 error = True
  76.                 continue
  77.             else:
  78.                 manual_matrix.append(correct)
  79.                 error = False
  80.                 break
  81.     print("==============end==============")
  82.     return manual_matrix
  83.  
  84. def manually():
  85.  
  86.     matrix_size = 4
  87.     print(
  88.         f"Enter the matrix elements separated by a space - integers in the range "
  89.         f"[{minim}, {maxim}]: "
  90.     )
  91.     manual_matrix = manual_input(matrix_size)
  92.     manual_matrix = np.array(manual_matrix)
  93.     return manual_matrix
  94.  
  95. """Заполнение автоматически"""
  96. def randomize():
  97.  
  98.     matrix_size = 4
  99.     random_matrix = (np.random.randint(
  100.         minim,
  101.         maxim + 1, (matrix_size, matrix_size)
  102.     ))
  103.     return random_matrix
  104.  
  105.  
  106.  
  107.  
  108. """Выводим нашу матрицу и массив из простых чисел, отсортированных по убыванию"""
  109. def answer(matrix):
  110.     print()
  111.     print("Your matrix : ")
  112.     print(matrix)
  113.     matrix_row = list(matrix.flatten())
  114.     cor_elem = sorted([num for num in matrix_row if p(num)], reverse=True)
  115.     print()
  116.     print("Prime numbers")
  117.     print([*cor_elem])
  118.  
  119. """Функция с кейсами для выбора действия"""
  120. def main():
  121.     print("type \"0\",if you need a list of available commands")
  122.  
  123.     while True:
  124.         try:
  125.             inputp = input("\n[home]>>> ")
  126.         except KeyboardInterrupt:
  127.             print()
  128.             unknown_command()
  129.             continue
  130.         except EOFError:
  131.             unknown_command()
  132.             continue
  133.  
  134.         match inputp:
  135.             case "0":
  136.                 help()
  137.             case "random":
  138.                 randmat = randomize()
  139.                 answer(randmat)
  140.             case "manual":
  141.                 manual_matrix = manually()
  142.                 answer(manual_matrix)
  143.             case "off":
  144.                 exit()
  145.             case _:
  146.                 unknown_command()
  147.  
  148.  
  149. if __name__ == '__main__':
  150.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement