Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is polymorphism in programming?
Polymorphism means one thing can take many forms. In programming, it allows functions or methods to work with different types of data or objects.
Click to reveal answer
beginner
How does polymorphism work with functions in Python?
In Python, polymorphism lets the same function name work with different types of inputs. The function behaves differently depending on the input type.
Click to reveal answer
beginner
Example: What will this code print?
def add(a, b):
return a + b
print(add(2, 3))
print(add('Hi, ', 'there!'))
It prints: 5 Hi, there! The same function add works for numbers and strings because + means addition for numbers and concatenation for strings.
Click to reveal answer
beginner
Why is polymorphism useful in programming?
It makes code simpler and flexible. You can use one function for many types of data, so you write less code and it works in more situations.
Click to reveal answer
intermediate
What happens if a function expects a certain type but gets another?
If the function can't handle the input type, Python will raise an error. Polymorphism works only if the function's operations make sense for the input types.
Click to reveal answer
What does polymorphism allow a function to do?
AChange its name automatically
BOnly work with numbers
CWork with different types of inputs
DRun faster
✗ Incorrect
Polymorphism lets a function handle different input types, like numbers or strings.
What will this code output?
def multiply(x, y):
return x * y
print(multiply(3, 4))
print(multiply('Hi', 3))
A12 and HiHiHi
B7 and Hi3
CError and HiHiHi
D12 and Error
✗ Incorrect
Multiplying numbers gives 12. Multiplying a string by a number repeats the string.
If a function uses + operator, which types can it work with in Python?
ANumbers and strings
BOnly numbers
COnly strings
DLists only
✗ Incorrect
The + operator adds numbers and joins strings, so the function can work with both.
What error occurs if a function tries to add a number and a string?
ASyntaxError
BTypeError
CValueError
DNameError
✗ Incorrect
Python raises a TypeError when you try to add incompatible types like number and string.
Why is polymorphism called 'many forms'?
ABecause it changes the function name
BBecause it only works with classes
CBecause it runs multiple times
DBecause one function can behave differently with different inputs
✗ Incorrect
Polymorphism means one function can take many forms by working differently depending on input types.
Explain polymorphism through functions in your own words and give a simple example.
Think about how one function can add numbers and join strings.
You got /3 concepts.
Describe why polymorphism is helpful when writing Python functions.
Consider how one function can replace many similar functions.
You got /4 concepts.
Practice
(1/5)
1.
What does polymorphism through functions mean in Python?
easy
A. Functions cannot be reused with different inputs
B. Multiple functions have the same name but different parameters
C. Functions can only accept one specific data type
D. A single function works with different data types
Solution
Step 1: Understand polymorphism concept
Polymorphism means one function can handle different types of inputs.
Step 2: Relate to function behavior
In Python, a single function can accept various data types and behave accordingly.
Final Answer:
A single function works with different data types -> Option D
Quick Check:
Polymorphism = single function, many types [OK]
Hint: Think: one function, many input types [OK]
Common Mistakes:
Confusing polymorphism with function overloading
Believing functions accept only one data type
Mixing polymorphism with inheritance
2.
Which of the following is the correct way to check a variable's type inside a function for polymorphism?
def process(value):
# What to use here?
pass
easy
A. if type(value) == int:
B. if value is int:
C. if isinstance(value, int):
D. if value == int:
Solution
Step 1: Recall Python type checking methods
Using isinstance() is the recommended way to check type in Python.
Step 2: Compare options
if isinstance(value, int): uses isinstance(value, int), which correctly checks if value is an int or subclass.
Final Answer:
if isinstance(value, int): -> Option C
Quick Check:
Use isinstance() for type checks [OK]
Hint: Use isinstance() to check types safely [OK]
Common Mistakes:
Using 'type() == int' which fails with subclasses
Using 'is' or '==' incorrectly for type comparison
3.14 is float, not int or str, so returns 'Unknown type'.
Final Answer:
Integer: 10
String: hello
Unknown type -> Option A
Quick Check:
Type checks match outputs [OK]
Hint: Match isinstance checks to output lines [OK]
Common Mistakes:
Assuming float is handled like int or str
Ignoring else case output
Mixing output order
4.
Find the error in this polymorphic function and fix it:
def process(value):
if isinstance(value, int):
return value * 2
elif isinstance(value, str):
return value + value
else:
return value / 2
print(process('abc'))
print(process([1, 2, 3]))
medium
A. No error; code runs fine
B. Error: Cannot divide list by 2; fix by handling list separately
C. Error: Missing return statement for int type
D. Error: Cannot multiply string by 2; fix by converting to int
Solution
Step 1: Analyze input 'abc'
String input returns 'abcabc' by concatenation, no error.
Step 2: Analyze input [1, 2, 3]
List input goes to else: value / 2, but dividing list by 2 causes TypeError.
Step 3: Fix the error
Need to add a check for list type or avoid dividing list by 2.
Final Answer:
Error: Cannot divide list by 2; fix by handling list separately -> Option B
Quick Check:
List / 2 causes error [OK]
Hint: Check operations valid for each type [OK]
Common Mistakes:
Assuming all types support division
Not testing with different input types
Ignoring TypeError exceptions
5.
Write a polymorphic function combine that accepts either two strings or two lists and returns their concatenation. What is the output of this code?
def combine(a, b):
if isinstance(a, str) and isinstance(b, str):
return a + b
elif isinstance(a, list) and isinstance(b, list):
return a + b
else:
return None
print(combine('Hi, ', 'there!'))
print(combine([1, 2], [3, 4]))
print(combine('Hello', [1, 2]))
hard
A. 'Hi, there!'\n[1, 2, 3, 4]\nNone
B. 'Hi, there!'\n[1, 2]\n[3, 4]
C. None\nNone\nNone
D. 'Hi, there!'\nNone\nNone
Solution
Step 1: Check first call combine('Hi, ', 'there!')
Both are strings, so returns concatenation 'Hi, there!'.
Step 2: Check second call combine([1, 2], [3, 4])
Both are lists, so returns concatenated list [1, 2, 3, 4].
Step 3: Check third call combine('Hello', [1, 2])
Types differ, so returns None.
Final Answer:
'Hi, there!'
[1, 2, 3, 4]
None -> Option A
Quick Check:
Type checks control output [OK]
Hint: Check types of both inputs before combining [OK]