Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- r = 4
- r2 = 4
- minim = 0
- maxim = 100
- matrix_size = 4
- """Проверка на простое число"""
- def p(x):
- return x > 1 and all(x % i != 0 for i in range(2, int(x ** 0.5) + 1))
- """Если неизвестная команда"""
- def unknown_command():
- print("Unknown command!. List of available commands")
- print("================================================================")
- print("manual - Create a square matrix with manual filling")
- print("random - Create a square matrix with filling automatically")
- print("off - close and exit")
- """Помощь по командам программы """
- def help():
- print("List of available commands")
- print("================================================================")
- print("manual - Create a square matrix with manual filling")
- print("random - Create a square matrix with filling automatically")
- print("off - close and exit")
- """Проверка на правильность значений"""
- def correct_input(input_row, matrix_size):
- try:
- correct = list(map(int, input_row))
- if len(correct) != matrix_size:
- print(f"Error: The row must have {matrix_size} elements")
- return False
- for i in correct:
- if i > maxim or i < minim:
- print(
- f"Error: All matrix elements must be integers "
- f"in range "
- f"[{minim}, {maxim}]"
- )
- return
- except ValueError:
- print(
- f"Error: All matrix elements must be integers "
- f"in range [{minim}, {maxim}]"
- )
- return False
- return correct
- """Заполнение вручную"""
- def manual_input(matrix_size):
- error = False
- manual_matrix = []
- print("==============start==============")
- for row in range(matrix_size):
- while True:
- try:
- if error:
- print("==============start==============")
- for i in manual_matrix:
- print(*i, sep=" ")
- input_row = input("").split()
- except KeyboardInterrupt:
- print("Error: incorrect input, try again")
- continue
- except EOFError:
- print("Error: incorrect input, try again")
- continue
- correct = correct_input(input_row, matrix_size)
- if not correct:
- print("re-enter the line")
- error = True
- continue
- else:
- manual_matrix.append(correct)
- error = False
- break
- print("==============end==============")
- return manual_matrix
- def manually():
- matrix_size = 4
- print(
- f"Enter the matrix elements separated by a space - integers in the range "
- f"[{minim}, {maxim}]: "
- )
- manual_matrix = manual_input(matrix_size)
- manual_matrix = np.array(manual_matrix)
- return manual_matrix
- """Заполнение автоматически"""
- def randomize():
- matrix_size = 4
- random_matrix = (np.random.randint(
- minim,
- maxim + 1, (matrix_size, matrix_size)
- ))
- return random_matrix
- """Выводим нашу матрицу и массив из простых чисел, отсортированных по убыванию"""
- def answer(matrix):
- print()
- print("Your matrix : ")
- print(matrix)
- matrix_row = list(matrix.flatten())
- cor_elem = sorted([num for num in matrix_row if p(num)], reverse=True)
- print()
- print("Prime numbers")
- print([*cor_elem])
- """Функция с кейсами для выбора действия"""
- def main():
- print("type \"0\",if you need a list of available commands")
- while True:
- try:
- inputp = input("\n[home]>>> ")
- except KeyboardInterrupt:
- print()
- unknown_command()
- continue
- except EOFError:
- unknown_command()
- continue
- match inputp:
- case "0":
- help()
- case "random":
- randmat = randomize()
- answer(randmat)
- case "manual":
- manual_matrix = manually()
- answer(manual_matrix)
- case "off":
- exit()
- case _:
- unknown_command()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement