Skip to main content

Python library to populate Moodle question banks using a Cloze/XML format.

Project description

moocloze

Python library to populate Moodle question banks using a Cloze/XML format.

It aims to provide a functionality similar to that of PyCloze, but reducing the necessity of specific knowledge about the Moodle XML or Cloze formats.

Contents:

Installation

The moocloze library is available as a pip package:

pip install moocloze

You can then import it as a normal package in any python code:

import moocloze

Minimal example

The following code (download source)

import moocloze

questions = [moocloze.Question(
    name=f"How much is {i}+{i}",
    contents=f"What is the result of {i}+{i}? "
             f"{moocloze.Numerical(i + i)}")
    for i in range(3)]

moocloze.questions_to_xml_file(questions=questions, output_path="example_quiz.xml")

generates a file in Cloze/XML format (download XML file) that can be imported in Moodle. Once imported, 3 questions are added to the bank, one of which is shown next:

Example output of a numerical question

Creating questions and importing into Moodle

The following workflow is proposed to add questions to a Moodle category

  • In your computer:

    1. Create a list of (related) Question instances.
      import moocloze
      questions = [moocloze.Question(name="...", contents="..."), ...]
      
    2. Export the set of questions into an .xml file with Moodle XML/Cloze format
      moocloze.questions_to_xml_file(questions=questions, output_path="my_questions.xml")
      
  • In Moodle:

    1. Go to your course's Question bank

      question bank

    2. (Optional) Go to the question Categories page and add your category

      categories

    3. Go to the question Import page, select the category where questions are to be imported (here "Raw audio file size", shown under the "General" section), upload your xml file (e.g., "my_questions.xml" in the example below) and press "Import":

      import

    4. You will be shown a confirmation page. If no errors are found, you are done!

Full example with all field types

You can find a complete example that produces a single question using all supported field (response) types:

  • moocloze.Numerical (integers or floats, with arbitrary error tolerance)
  • moocloze.Multiresponse (one or more valid options using checkboxes)
  • moocloze.Multichoice (one valid option among several, using dropdown menus or radio buttons)
  • moocloze.ShortAnswer (short text)

A screenshot of the question is shown next (see full size):

Adding feedback to the questions

Whenever you instantiate the moocloze.Question, you can pass a general_feedback parameter to it, as in:

import moocloze

question = moocloze.Question(
    name=f"Simple question",
    contents=f"How many sides does a dodecahedron have?"
             f"{moocloze.Numerical(answer=12, show_tolerance=False)}",
    general_feedback="Do not confuse it with the icosahedron (20 faces).")

import

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moocloze-1.0.2.tar.gz (7.2 kB view hashes)

Uploaded Source

Built Distribution

moocloze-1.0.2-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page