Introduction
What are user defined types?
Sometimes the use of in-built data types / structures are not sufficient to represent the data you are working with. It is therefore necessary to construct your own data types/structures. User defined types can make programs much easier to code, read and debug.
Non-composite vs Composite types
Non composite types are user defined types that contain only one data type, for instance enumerators.
Composite data types are user defined types that contain more than one data type, for instance a record
Enumerators
Enumerators
Enumerators bind a group of names to constant values and are useful for things such as days of the weeks or months of the year,
Enumerators in Python
Enumerators were added to Python 3.4+
import enum class Months(enum.Enum): JAN = 1 FEB = 2 MAR = 3 APR = 4 MAY = 5 JUN = 6 JUL = 7 AUG = 8 SEP = 9 OCT = 10 NOV = 11 DEC = 12 print(Months.JAN) # prints <Months.JAN: 1> print(Months['JAN']) # also prints <Months.JAN: 1> // useful for passing variable references print(Months(1)) also prints <Months.JAN: 1> // find a month from its number print(Months.JAN.value) # prints 1 //useful if you need to find a month's number print(Months(1).name) # prints the month's name print(Months['JAN'].value > Months['FEB'].value) # Prints False //Useful for finding out which month has a higher value
Pointers
Pointers
A pointer is a datatype that refers to a location in memory. It is a form of indirect referencing. Obtaining the value stored at the memory location is known as dereferencing.
Python note
Python does not use pointers, though many other languages (such as C) do. For a discussion why Python doesn’t use pointers, take a look at this article.
Records
Records
Records are composite data types that contain references to at least 1 other datatype within them. The advantage of records is that all related data is tied together in one place. They are incredibly useful and popular in many languages.
#Works for Python 3.3+ import types giraffe = types.SimpleNamespace() giraffe.name = "Gerry" giraffe.height = 350 giraffe.age = 15 giraffe.origin = "Africa"
CIE Pseudocode & Records
In the exam the main use of records will be when reading & writing records from/to random files.
Sets
Sets
Sets are a composite data type that are unordered, iterable, mutable and contain no duplicate elements.
Python sets are in built and are incredibly useful for certain tasks where you need to compare 2 sets in some way.
The main functions are:
- Union
- Intersection
- Difference
- Symmetric difference
Python Sets Tutorial
Can’t access YouTube? Try the Google Drive Version instead.
Python Sets have lots of useful methods that can be found here.
Challenges
Challenges
Challenge 1
Create a function called months_between that finds out the number of months between 2 months
Challenge 2
Create a list of zoo animals in records and print out the details of the animals in a headed table format.
Challenge 3
Adapt challenge 2 so that the program asks the user to input some parameters(such as maximum height) and only prints out the relevant information.
Resources
User Defined Types Presentation
Exam Questions
May 17 31 – Qn 1
Nov 18 33 Qn 1
Nov 19 31 Qn 5
Nov 19 32 Qn6