teachComputing
  • Home
  • AI
    • AI Literacy >
      • AI Alliteration
      • Describing Monsters
      • Dystopian writing
      • Bringing literacy to life with AI
      • AI Literacy Prompts
    • AI Computing >
      • AI Computing Lessons >
        • Make me happy
        • Chatting Robot
        • Supervised Learning
        • Fooled
        • Socratic Debate
        • Moral Machine
        • Chatting Robot
      • AI Coding Strategies
      • AI Computing Prompts
    • AI Prompts
  • Teaching & Learning
    • Wellbeing
    • Blog
    • Humour >
      • Teacher Humour
      • Teacher Humor
    • PLN Challenge >
      • Covering your backside
      • Online Privacy
      • Twitter Challenge >
        • Twitter All Star
        • Challenge 1
        • Challenge 2
        • Challenge 3
        • Tips for staying safe on Twitter
        • Tips for hosting Edu Twitter Chats
        • Tips for taking part in Twitter chats
        • It's all about the hashtag! Essential chats for educators
        • How to storify a chat
        • How to schedule Tweets
        • Twitter Lists
        • NT2tEU
      • Facebook Challenge >
        • Challenge 4
        • Challenge 5
        • Challenge 6
        • Tips for staying safe on Facebook
      • Google Challenge >
        • Challenge 7
        • Challenge 8
        • Challenge 9
      • Pinterest Challenge >
        • Challenge 10
        • Challenge 11
        • Challenge 12
        • Tips for using Pinterest
      • Blog Challenge >
        • Challenge 13
        • Challenge 14
        • Challenge 15
        • How to create a classroom blog
      • Staffrm Challenge >
        • Challenge 16
        • Challenge 17
        • Challenge 18
      • Skype Challenge >
        • Challenge 19
        • Challenge 20
        • Challenge 21
      • Edmodo Challenge >
        • Challenge 22
        • Challenge 23
        • Challenge 24
      • TeachMeet Challenge >
        • Challenge 25
        • Challenge 26
        • Challenge 27
      • In-school challenge >
        • Challenge 28
        • Challenge 29
        • Challenge 30
      • 30 ways to grow your PLN
    • Tools for Teachers >
      • Web 2.0 >
        • Top 10 Web 2.0 Tools
        • Classroom Response Tools
      • Quiz Tools
      • Classroom Management Tools
      • Software >
        • Media Conversion Tools
        • Application Software
      • Multimedia >
        • Free Music
    • BYOD
    • Digital Leaders >
      • Digital Leaders Blog >
        • DL Archive
      • DL Tips
      • Quotes
      • Links
    • Flipped Learning >
      • Flipped Classroom vs. Blended Classroom
    • Gamification >
      • Gamification vs. Game Based Learning vs. Game Design
    • School Closures
    • Game Based Learning >
      • Minecraft >
        • Minecraft in Education
        • Minecraft Lesson Ideas
        • Minecraft Literacy
        • Real Life Minecraft
        • Minecraft Top Tips
        • Minecraft Coding Tutorials >
          • Minecraft Code Builder Setup
          • Minecraft Code: Walking on Air
          • Minecraft Code: Hello World
          • Minecraft Code: Functions
          • Minecraft Code: Rainbow
          • Minecraft Code: Skyscraper
          • Minecraft Pixel Art
    • The magic of >
      • The magic of Computing
      • The magic of Maths
      • The magic of Science
      • The magic of Literacy
    • Road2e2
    • T&L Blog
  • Computing
    • Computing Blog >
      • GCSE Computer Science
      • General
    • Teaching Computer Science >
      • CPD >
        • Blocks to Code
        • Tutorials >
          • How to embed Flash into PowerPoint
          • How to embed YouTube videos in to PowerPoint
          • How to create a wiki
          • How to create a classroom blog
      • Schemes of Work
      • Programming Resources
      • Theory
      • Posters >
        • Binary Posters
      • Festive Computing Activities
      • FLOPPYS 2020
      • FLOPPYS 2021
      • FLOPPYS 2022
      • Game Design
      • App Creation
    • Theory Lessons >
      • Theory Tests
      • Computer Hardware >
        • Input / Output
        • CPU
        • LMC
        • Storage Devices
        • Memory (RAM / ROM)
        • Hardware
      • Binary Lessons >
        • Units of Data
        • Binary Representation
        • Binary Representation of Images >
          • Binary Representation of Images (Festive)
          • Pixel Painter
        • Binary Representation of Characters
        • Binary Representation of Sound >
          • ADC Simulator
        • Binary Representation of Instructions
        • Binary Addition
        • Hexadecimal
      • Software >
        • Operating System
        • Types of Software
        • Utility Software
      • Programming >
        • Flowcharts
      • Computational Thinking >
        • Data Science
    • Digital Literacy >
      • Social Media (Good or Bad thing?)
      • Cyberbullying
      • Staying Safe Online
    • Games >
      • Binary Games >
        • Binary Blitz!
        • Binary Brainiac
        • Binary Blaster
        • Binary Blast Off
    • Binary >
      • ASCII Converter
      • Binary to Decimal
      • Binary to Hex
      • Binary Calculator
    • Escape Rooms >
      • Breakout Edu
      • Escape Timers >
        • Escape Timer
        • Team Timer
        • Binary Timer
      • Binary Escape
    • ICT Strand >
      • Fake News Project >
        • Fake News 1
        • Fake News 2
        • Fake News 3
        • Fake News 4
        • Fake News 5
      • Spreadsheet Modelling
      • Superhero Movie Trailer
      • PowerPoint Task
      • Digital Imaging
      • Paint 3D Tutorial
    • Programming Lessons >
      • Scratch >
        • Festive Scratch >
          • Music Festive with Scratch
          • Turtle Snowflakes
          • What's your elf name
          • Secret Santa
        • Making music with Scratch
        • Sorting Hat Lesson
        • Turtle Time
        • Superhero name generator
        • Compliment Generator
        • Magic 8 ball
      • Python >
        • Chatbot
        • Coding Golf
        • Turtle Time >
          • Turtle Instructions
        • Magic 8 ball
        • Python Mad Libs
        • Rock Paper Scissors
        • Shakespearean Insult Generator >
          • Shakespearean Insult Generator Part 2
        • Compliment generator
        • Sorting Hat
        • Superhero name generator
        • Cards Against
        • Guess the word
        • Guess the number
        • Festive Python >
          • What's your elf name
          • Secret Santa
          • Turtle Snowflakes
      • Little Man Computer
      • Hour of Code >
        • Hour of Code Music
        • Python Tutorials
        • HoC 8-Bit Challenge
        • Music MicroPython (Festive)
      • Raspberry Pi >
        • Networking the Pi
        • Minecraft Pi
        • Harry Potter Sorting Hat >
          • Harry Potter Sorting Hat (GPIO)
        • Raspberry Pi LTSP (Networked Classroom)
        • Astro Pi
    • Homeschooling
    • Remote Learning >
      • Fun Python Tutorials
      • Python Tutorials >
        • Chatbot Tutorial
        • Dice Roll
        • Turtle Tutorial
        • Magic 8 ball
        • Sorting Hat
        • Rock Paper Scissors Tutorial
        • Cards Against
        • Python Mad Libs
        • Shakespearean Insult Generator >
          • Shakespearean Insult Generator Part 2
        • Guess the word
        • Guess the number
        • Superhero name generator
        • Compliment generator
        • Festive Python Tutorials >
          • What's your elf name
          • Secret Santa
          • Turtle Snowflakes
      • Scratch Tutorials >
        • Sorting Hat
        • What's your superhero name
        • Turtle Time Tutorial
        • Compliment Generator
        • Magic 8 Ball
        • Festive Scratch Tutorials >
          • Festive Music with Scratch
          • Secret Santa Scratch Tutorial
          • Turtle Snowflakes Tutorial
          • What's your elf name
    • Revision >
      • Data Representation >
        • Binary Representation of Images
        • Binary Representation of Sound
  • 21 Things
    • 21 Things To Try >
      • ConnectEd
      • Social Media >
        • Twitter
        • Pinterest
        • Facebook Groups
        • Facebook Pages
        • Google+ Communities
        • Staffrm
        • Edmodo
        • Mystery Skype
        • Blogging
        • Classroom Blogging
      • Gamification
      • Flipped Classroom
      • Breakout Edu
      • Edu Podcasts
      • Jar of Awesome
      • TeachMeet
      • Team Teaching
      • Mixed Reality
      • Digital Leaders
      • Genius Hour
      • Sketchnoting
    • Computing >
      • CS 20
      • Code Golf
      • PRIMM
      • Under The Hood
      • Unplugged
      • Podcasts
      • Facebook Groups CS
      • Flipped Classroom CS
      • Teach with Magic
      • Socratic Debate
      • Coding Music
    • 21 Things Keep Fit >
      • 20 Health Hacks
      • Home Health Hacks
    • 21 Things PLN >
      • Edmodo
      • Twitter
      • Reply to a blog
      • Skype
      • Cofee Edu
      • Pinterest
      • Reach out
      • Conferences
      • Instagram
      • Ning
      • MEC
      • Voxer
      • LinkedIn
  • Microbit
    • Physical Computing >
      • micro:bit LEDs
      • micro:bit PIR
      • micro:bit Servo
      • micro:bit Temp
      • micro:bit LDR
      • micro:bit Moisture
      • micro:bit RGB LEDs
      • micro:bit HC-SR04 3v3
      • micro:bit HC-SR04 5v
      • micro:bit Push button
      • micro:bit Potentiometer
      • micro:bit Piezo
    • Music >
      • Music Festive
    • Festive Projects
    • Projects >
      • Music
      • Music MicroPython
      • Servo Animals
    • Lessons >
      • Magic 8 Ball
      • Harry Potter Sorting Hat
    • Quick Start Guide
    • Microbit Simulator
  • #100 Ideas
    • Testimonials
    • Competition >
      • Competition 2
    • Worksheets
    • Bonus Ideas >
      • What's your elf name
      • Make me happy
      • Guess the word
      • Cards Against Humanities
      • Compliment generator
      • Data Science
    • Curriculum
    • ISTE
    • CSTA
  • About
    • Privacy
  • Home
  • AI
    • AI Literacy >
      • AI Alliteration
      • Describing Monsters
      • Dystopian writing
      • Bringing literacy to life with AI
      • AI Literacy Prompts
    • AI Computing >
      • AI Computing Lessons >
        • Make me happy
        • Chatting Robot
        • Supervised Learning
        • Fooled
        • Socratic Debate
        • Moral Machine
        • Chatting Robot
      • AI Coding Strategies
      • AI Computing Prompts
    • AI Prompts
  • Teaching & Learning
    • Wellbeing
    • Blog
    • Humour >
      • Teacher Humour
      • Teacher Humor
    • PLN Challenge >
      • Covering your backside
      • Online Privacy
      • Twitter Challenge >
        • Twitter All Star
        • Challenge 1
        • Challenge 2
        • Challenge 3
        • Tips for staying safe on Twitter
        • Tips for hosting Edu Twitter Chats
        • Tips for taking part in Twitter chats
        • It's all about the hashtag! Essential chats for educators
        • How to storify a chat
        • How to schedule Tweets
        • Twitter Lists
        • NT2tEU
      • Facebook Challenge >
        • Challenge 4
        • Challenge 5
        • Challenge 6
        • Tips for staying safe on Facebook
      • Google Challenge >
        • Challenge 7
        • Challenge 8
        • Challenge 9
      • Pinterest Challenge >
        • Challenge 10
        • Challenge 11
        • Challenge 12
        • Tips for using Pinterest
      • Blog Challenge >
        • Challenge 13
        • Challenge 14
        • Challenge 15
        • How to create a classroom blog
      • Staffrm Challenge >
        • Challenge 16
        • Challenge 17
        • Challenge 18
      • Skype Challenge >
        • Challenge 19
        • Challenge 20
        • Challenge 21
      • Edmodo Challenge >
        • Challenge 22
        • Challenge 23
        • Challenge 24
      • TeachMeet Challenge >
        • Challenge 25
        • Challenge 26
        • Challenge 27
      • In-school challenge >
        • Challenge 28
        • Challenge 29
        • Challenge 30
      • 30 ways to grow your PLN
    • Tools for Teachers >
      • Web 2.0 >
        • Top 10 Web 2.0 Tools
        • Classroom Response Tools
      • Quiz Tools
      • Classroom Management Tools
      • Software >
        • Media Conversion Tools
        • Application Software
      • Multimedia >
        • Free Music
    • BYOD
    • Digital Leaders >
      • Digital Leaders Blog >
        • DL Archive
      • DL Tips
      • Quotes
      • Links
    • Flipped Learning >
      • Flipped Classroom vs. Blended Classroom
    • Gamification >
      • Gamification vs. Game Based Learning vs. Game Design
    • School Closures
    • Game Based Learning >
      • Minecraft >
        • Minecraft in Education
        • Minecraft Lesson Ideas
        • Minecraft Literacy
        • Real Life Minecraft
        • Minecraft Top Tips
        • Minecraft Coding Tutorials >
          • Minecraft Code Builder Setup
          • Minecraft Code: Walking on Air
          • Minecraft Code: Hello World
          • Minecraft Code: Functions
          • Minecraft Code: Rainbow
          • Minecraft Code: Skyscraper
          • Minecraft Pixel Art
    • The magic of >
      • The magic of Computing
      • The magic of Maths
      • The magic of Science
      • The magic of Literacy
    • Road2e2
    • T&L Blog
  • Computing
    • Computing Blog >
      • GCSE Computer Science
      • General
    • Teaching Computer Science >
      • CPD >
        • Blocks to Code
        • Tutorials >
          • How to embed Flash into PowerPoint
          • How to embed YouTube videos in to PowerPoint
          • How to create a wiki
          • How to create a classroom blog
      • Schemes of Work
      • Programming Resources
      • Theory
      • Posters >
        • Binary Posters
      • Festive Computing Activities
      • FLOPPYS 2020
      • FLOPPYS 2021
      • FLOPPYS 2022
      • Game Design
      • App Creation
    • Theory Lessons >
      • Theory Tests
      • Computer Hardware >
        • Input / Output
        • CPU
        • LMC
        • Storage Devices
        • Memory (RAM / ROM)
        • Hardware
      • Binary Lessons >
        • Units of Data
        • Binary Representation
        • Binary Representation of Images >
          • Binary Representation of Images (Festive)
          • Pixel Painter
        • Binary Representation of Characters
        • Binary Representation of Sound >
          • ADC Simulator
        • Binary Representation of Instructions
        • Binary Addition
        • Hexadecimal
      • Software >
        • Operating System
        • Types of Software
        • Utility Software
      • Programming >
        • Flowcharts
      • Computational Thinking >
        • Data Science
    • Digital Literacy >
      • Social Media (Good or Bad thing?)
      • Cyberbullying
      • Staying Safe Online
    • Games >
      • Binary Games >
        • Binary Blitz!
        • Binary Brainiac
        • Binary Blaster
        • Binary Blast Off
    • Binary >
      • ASCII Converter
      • Binary to Decimal
      • Binary to Hex
      • Binary Calculator
    • Escape Rooms >
      • Breakout Edu
      • Escape Timers >
        • Escape Timer
        • Team Timer
        • Binary Timer
      • Binary Escape
    • ICT Strand >
      • Fake News Project >
        • Fake News 1
        • Fake News 2
        • Fake News 3
        • Fake News 4
        • Fake News 5
      • Spreadsheet Modelling
      • Superhero Movie Trailer
      • PowerPoint Task
      • Digital Imaging
      • Paint 3D Tutorial
    • Programming Lessons >
      • Scratch >
        • Festive Scratch >
          • Music Festive with Scratch
          • Turtle Snowflakes
          • What's your elf name
          • Secret Santa
        • Making music with Scratch
        • Sorting Hat Lesson
        • Turtle Time
        • Superhero name generator
        • Compliment Generator
        • Magic 8 ball
      • Python >
        • Chatbot
        • Coding Golf
        • Turtle Time >
          • Turtle Instructions
        • Magic 8 ball
        • Python Mad Libs
        • Rock Paper Scissors
        • Shakespearean Insult Generator >
          • Shakespearean Insult Generator Part 2
        • Compliment generator
        • Sorting Hat
        • Superhero name generator
        • Cards Against
        • Guess the word
        • Guess the number
        • Festive Python >
          • What's your elf name
          • Secret Santa
          • Turtle Snowflakes
      • Little Man Computer
      • Hour of Code >
        • Hour of Code Music
        • Python Tutorials
        • HoC 8-Bit Challenge
        • Music MicroPython (Festive)
      • Raspberry Pi >
        • Networking the Pi
        • Minecraft Pi
        • Harry Potter Sorting Hat >
          • Harry Potter Sorting Hat (GPIO)
        • Raspberry Pi LTSP (Networked Classroom)
        • Astro Pi
    • Homeschooling
    • Remote Learning >
      • Fun Python Tutorials
      • Python Tutorials >
        • Chatbot Tutorial
        • Dice Roll
        • Turtle Tutorial
        • Magic 8 ball
        • Sorting Hat
        • Rock Paper Scissors Tutorial
        • Cards Against
        • Python Mad Libs
        • Shakespearean Insult Generator >
          • Shakespearean Insult Generator Part 2
        • Guess the word
        • Guess the number
        • Superhero name generator
        • Compliment generator
        • Festive Python Tutorials >
          • What's your elf name
          • Secret Santa
          • Turtle Snowflakes
      • Scratch Tutorials >
        • Sorting Hat
        • What's your superhero name
        • Turtle Time Tutorial
        • Compliment Generator
        • Magic 8 Ball
        • Festive Scratch Tutorials >
          • Festive Music with Scratch
          • Secret Santa Scratch Tutorial
          • Turtle Snowflakes Tutorial
          • What's your elf name
    • Revision >
      • Data Representation >
        • Binary Representation of Images
        • Binary Representation of Sound
  • 21 Things
    • 21 Things To Try >
      • ConnectEd
      • Social Media >
        • Twitter
        • Pinterest
        • Facebook Groups
        • Facebook Pages
        • Google+ Communities
        • Staffrm
        • Edmodo
        • Mystery Skype
        • Blogging
        • Classroom Blogging
      • Gamification
      • Flipped Classroom
      • Breakout Edu
      • Edu Podcasts
      • Jar of Awesome
      • TeachMeet
      • Team Teaching
      • Mixed Reality
      • Digital Leaders
      • Genius Hour
      • Sketchnoting
    • Computing >
      • CS 20
      • Code Golf
      • PRIMM
      • Under The Hood
      • Unplugged
      • Podcasts
      • Facebook Groups CS
      • Flipped Classroom CS
      • Teach with Magic
      • Socratic Debate
      • Coding Music
    • 21 Things Keep Fit >
      • 20 Health Hacks
      • Home Health Hacks
    • 21 Things PLN >
      • Edmodo
      • Twitter
      • Reply to a blog
      • Skype
      • Cofee Edu
      • Pinterest
      • Reach out
      • Conferences
      • Instagram
      • Ning
      • MEC
      • Voxer
      • LinkedIn
  • Microbit
    • Physical Computing >
      • micro:bit LEDs
      • micro:bit PIR
      • micro:bit Servo
      • micro:bit Temp
      • micro:bit LDR
      • micro:bit Moisture
      • micro:bit RGB LEDs
      • micro:bit HC-SR04 3v3
      • micro:bit HC-SR04 5v
      • micro:bit Push button
      • micro:bit Potentiometer
      • micro:bit Piezo
    • Music >
      • Music Festive
    • Festive Projects
    • Projects >
      • Music
      • Music MicroPython
      • Servo Animals
    • Lessons >
      • Magic 8 Ball
      • Harry Potter Sorting Hat
    • Quick Start Guide
    • Microbit Simulator
  • #100 Ideas
    • Testimonials
    • Competition >
      • Competition 2
    • Worksheets
    • Bonus Ideas >
      • What's your elf name
      • Make me happy
      • Guess the word
      • Cards Against Humanities
      • Compliment generator
      • Data Science
    • Curriculum
    • ISTE
    • CSTA
  • About
    • Privacy
Search by typing & pressing enter

YOUR CART

Python Sorting Hat

NOTE: A self-guided (in-browser) tutorial version of this lesson (suitable for remote learning) can be found by here:
Sorting hat tutorial

Like this lesson? Share it with your followers by clicking on the image below.
Picture
In this lesson, students will create a Harry Potter style sorting hat. 

Suggested time: 60 mins

Learning Objectives:

  • Understand and use sequence in an algorithm
  • Understand and use iteration in an algorithm (FOR and WHILE loops)
  • Understand and use selection in an algorithm (IF, Else and Else if)​
Curriculum Mapping:

KS2:

  • Design, write and debug programs that accomplish specific goals; solve problems by breaking them into smaller parts. Select, use and combine a variety of software on a range of digital devices to design and create a range of programs.
  • Use sequence, selection and repetition in programs; work with variables and various forms of input and output
  • Use logical reasoning to explain how some simple algorithms work; detect and correct errors in algorithms and programs


KS3:

  • Use two or more programming languages, at least one of which is textual, to solve a variety of computational problems.

STUDENT: COMPUTATIONAL THINKER:

  • 5a: Students break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving.
  • 5c: Students break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving.
  • 5d: Students understand how automation works and use algorithmic thinking to develop a sequence of steps to create and test automated solutions.

 

 

EDUCATOR: COMPUTATIONAL THINKING COMPETENCIES:

  • 4b: Design authentic learning activities that ask students to leverage a design process to solve problems with awareness of technical and human constraints and defend their design choices.

 

COMPUTER SCIENCE EDUCATORS:

  • 2a: Plan and teach computer science lessons/units using effective and engaging practices and methodologies:

i. Select a variety of real-world computing problems and project-based methodologies that support active and authentic learning and provide opportunities for creative and innovative thinking and problem solving

ii. Demonstrate the use of a variety of collaborative groupings in lesson plans/units and assessments

iii. Design activities that require students to effectively describe computing artifacts and communicate results using multiple forms of media

iv. Develop lessons and methods that engage and empower learners from diverse cultural and linguistic backgrounds

v. Identify problematic concepts and constructs in computer science and appropriate strategies to address them

vi. Design and implement developmentally appropriate learning opportunities supporting the diverse needs of all learners

vii. Create and implement multiple forms of assessment and use resulting data to capture student learning, provide remediation and shape classroom instruction

 

CSTA K–12 CS Standards:

  • 1B-AP-08: Compare and refine multiple algorithms for the same task and determine which is the most appropriate.
  • 1B-AP-09: Create programs that use variables to store and modify data.
  • 1B-AP-10: Create programs that include sequences, events, loops, and conditionals.
  • 1B-AP-11: Decompose (break down) problems into smaller, manageable subproblems to facilitate the program development process.
  • 1B-AP-13: Use an iterative process to plan the development of a program by including others' perspectives and considering user preferences.
  • 1B-AP-15: Test and debug (identify and fix errors) a program or algorithm to ensure it runs as intended.
  • 1B-AP-17: Describe choices made during program development using code comments, presentations, and demonstrations.
  • 2-AP-11: Create clearly named variables that represent different data types and perform operations on their values
  • 2-AP-12: Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals.
  • 2-AP-15: Seek and incorporate feedback from team members and users to refine a solution that meets user needs.
  • 2-AP-16: Incorporate existing code, media, and libraries into original programs, and give attribution.
  • 2-AP-17: Systematically test and refine programs using a range of test cases.
  • 3A-AP-14: Use lists to simplify solutions, generalizing computational problems instead of repeatedly using simple variables.
  • 3A-AP-15: Justify the selection of specific control structures when tradeoffs involve implementation, readability, and program performance, and explain the benefits and drawbacks of choices made.

AREA OF LEARNING AND EXPERIENCE: Science and Technology:

Computation is the foundation for our digital world.

Progression step 3        

  • I can use conditional statements to add control and decision-making to algorithms.
  • I can identify repeating patterns and use loops to make my algorithms more concise.
  • I can explain and debug algorithms.

 

Progression step 4

  • I can decompose given problems and select appropriate constructs to express solutions in a variety of environments.
  • I can select and use data structures that efficiently manage data in algorithms.
  • I can plan and implement test strategies to identify errors in programs.

 

Progression step 5

  • I can identify, define and decompose problems, choose appropriate constructs and express solutions in a variety of environments.
  • I can use file-handling techniques to manipulate data in algorithms.
  • I can test, evaluate and improve a solution in software.

 


Introduction:

The Sorting Hat is an artefact used at Hogwarts in the Harry Potter books. The hat determines which of the four school houses (Gryffindoe, Slytherin, Hufflepuff and Ravenclaw) each new student is assigned to. The hat resembles a wide-brimmed wizard's hat, with folds and tears that make it appear to have eyes and a mouth. During the opening banquet at the beginning of each school year, the Hat is placed on every first-year student's head. The Hat announces its choice aloud, and the student joins the selected house.

In this lesson, students will create a Harry Potter style sorting hat using the tkinter GUI in Python. 

Starter:

Show students the 'Sorting Hat' scene from Harry Potter and the Sorcerer's Stone to set the scene:
Explain to students that they will be creating their very own 'Harry Potter' style sorting hat that will select a house at random when a button is pressed.

Version 1 - Simple sorting hat

Let's first start with as simple version of the sorting hat.

​STEP 1 - Importing the necessary libraries

Tell students that, in order for the program to work, they need to import the random library. Instruct students to input the following code: 
​import random
Next, tell students that they need to pick a number at random. Ask students to add the following code on a new line:
​number = random.randint(1,4)
Next, tell students that they need to create a condition where if the random number is generated is a '1' the program will return "Gryffindor": Explain to students that they will need to use an if() statement:
​if number == 1:
    print("Gryffindor")
Next, tell students that they need to add a condition for if the program randomly generates a 2 or a 3. Explain to students that they will need to use an elif statement. Instruct students to add the following lines of code:
​elif number == 2:
    print("Hufflepuff")
elif number == 3:
    print("Ravenclaw")
Finally, explain to students that, as there is only one more possible result, they can use an else statement to end the condition. Ask students to input the following:
​else:
    print("Slytherin")
The student's solutions should look like this:
​# Sorting Hat version 1

import random

#Pick a number between 1 and 4
number = random.randint(1,4)

if number == 1:
    print("Gryffindor")
elif number == 2:
    print("Hufflepuff")
elif number == 3:
    print("Ravenclaw")
else:
    print("Slytherin")
​​Ask students to run their code – making note of and fixing any runtime errors.

Version 2 - Using lists

Pose the question: "What if we had 10 or 20 houses or we wanted to create a student name picker with up to 30 students, what would be the problem with using an if/elif/else statement?". 

(Try to draw out answers such as “Easy to make mistakes” and “Difficult to debug” etc.)


Ask students if they can think of a better way to do this?

Explain to students that there is a better way to tackle this task using a list. Explain to students that lists will most likely be covered in their Controlled Assessment / exam.

​​
STEP 1 - Importing the necessary libraries

Start by instructing students to import the random library:
import random
​​STEP 2 - Creating the list

Instruct students to create a list containing the four houses ("Slytherin", "Gryffindor", "Hufflepuff" and "Ravenclaw"). Suggest calling the list 'houses'. Their code should look like this:
​​houses=["Slytherin", "Gryffindor", "Hufflepuff", "Ravenclaw"]
STEP 3 - Selecting a random item from the list

Finally, ask students to enter the following code:
print(random.choice(houses))
​The students finished code should look like this:
# Sorting Hat version 1

import random

# List of houses.
houses=["Slytherin", "Gryffindor", "Hufflepuff", "Ravenclaw"]

# Pick a house at random from houses.
print(random.choice(houses))
​​​Ask students to run their code – making note of and fixing any runtime errors.

Version 3 - Introducing tkinter

Tkinter is the default GUI that is shipped with Python. With tkinter, it is easy to create GUIs to use with your Python code such as windows and buttons. The following code is a variation of the previous example but using tkinter.


Instruct students to copy the following code (making sure that they read the comments explaining what the code is doing):
The students finished code should look like this:
​import tkinter
import random

# List of houses.
houses=["Slytherin", "Gryffindor", "Hufflepuff", "Ravenclaw"]

# Function to pick a house at random from houses.
def pickHouse():
    hatLabel.configure(text=(random.choice(houses)))

# configure the tkinter Graphical User Interface (GUI).
root = tkinter.Tk()
# Set the tkinter window title.
root.title("Python Sorting Hat")
# Set the tkinter window size.
root.geometry("600x100")

# Set the font style and size for tkinter.
hatLabel = tkinter.Label(root, text="", font=("Helvetica", 32))
hatLabel.pack()

# Create a button with the label 'Choose a house'.
insultButton = tkinter.Button(text="Choose a house", command=pickHouse)
insultButton.pack()

root.mainloop()
​Ask students to run their code – making note of and fixing any runtime errors.
​
Extension:

Challenge students to:
  • Change the names of the houses in their sorting hat - if the school operates a house system, students can use their school's houses.
  • Create a random name selector that will randomly pick a student in their class.

Resources:
Simple sorting hat solution
simplehat.zip
File Size: 0 kb
File Type: zip
Download File

Sorting (List solution)
sortinghat_list.zip
File Size: 0 kb
File Type: zip
Download File

tkinter sorting hat solution
tkinter_hat.zip
File Size: 0 kb
File Type: zip
Download File


You may also be interested in:
  • Python Mad Libs
  • Python Chat Bot
  • Code Golf
  • Python Shakespearean insult generator
  • Python Magic 8-Ball ​

Licence:

Unless otherwise specified, everything in this repository is covered by the following licence:
Picture
Raspberry Pi "Sorting Hat" lesson is licenced under a Creative Commons Attribution 4.0 International License.
Powered by Create your own unique website with customizable templates.