Как предоставить учащимся загадочную функцию в Python

#python #random #jupyter-notebook #source-code-protection

#python #Случайный #jupyter-записная книжка #защита исходного кода

Вопрос:

Я преподаю курс дискретной математики, в который я включил компонент программирования. Мы использовали Python Notebooks через Jupyter.

Мы подходим к разделу теории вероятностей, и я хотел бы предоставить им «загадочную случайную величину»: Я хочу, чтобы учащиеся могли выбирать случайную переменную, не зная, как она определена.

Я не знаю лучшего способа реализовать это и надеялся, что кто-нибудь сможет предложить. Вот функции, которые я хочу:

  • Я определяю одну или несколько случайных величин (желательно на Python),
  • Учащиеся должны иметь возможность выбирать из случайной переменной в записной книжке Python (чтобы они могли экспериментировать с ней), но
  • учащиеся не должны видеть код, который определяет случайную переменную.

Комментарии:

1. На самом деле невозможно скрыть исходный код Python.

2. Вы могли бы попытаться запутать ее, или вы могли бы написать веб-сервис с клиентским модулем.

3. Да для веб-службы, тогда вы не раскрываете никакого исходного кода.

4. Дайте им простой модуль с простым интерфейсом, но под капотом используйте простой сервис сокетов для другой программы, запущенной в вашей сети (в классе) или где-нибудь на «облачном сервере» (многие из них бесплатны). Я не знаю, что вы могли бы сделать с учеником, не подключенным к сети. Не имеет значения, смотрят ли они на ваш код сокета, хотя это не является предметом вашего курса.

Ответ №1:

Если эта система поддерживает модули, вы можете определить функцию, возвращающую несколько случайных значений (например, указывающую индекс), или несколько функций, возвращающих каждому случайное значение, и поместить эти функции в один модуль, к которому у ваших учащихся нет доступа. Они могли импортировать модуль .pyc и использовать его, но не видели коды внутри него.

Комментарии:

1. Pyc декомпилируется, если есть мотивация.