📖 Scenario: Imagine you are designing a simple compiler that needs to handle different data types in expressions. Sometimes, the compiler must automatically change one data type to another to make operations work smoothly. This process is called type coercion or type conversion.In this project, you will build a small example that shows how type coercion and conversion work in a compiler-like setting.
🎯 Goal: You will create a data structure representing variables with types and values, set up rules for type conversion, apply these rules to convert values, and finally show the converted results.
📋 What You'll Learn
Create a dictionary of variables with their types and values
Add a configuration dictionary for type conversion rules
Write logic to convert variable values according to the rules
Complete the structure to display the converted variables
💡 Why This Matters
🌍 Real World
Compilers and interpreters often need to convert data types automatically to perform operations correctly.
💼 Career
Understanding type coercion and conversion is essential for compiler developers, language designers, and software engineers working with typed languages.
Progress0 / 4 steps
1
Create variables dictionary
Create a dictionary called variables with these exact entries: 'x': ('int', 10), 'y': ('float', 5.5), 'z': ('string', '20').
Compiler Design
Hint
Use a dictionary where each key is a variable name and the value is a tuple of type and value.
2
Add type conversion rules
Create a dictionary called conversion_rules that maps 'int' to int, 'float' to float, and 'string' to str (the Python built-in types).
Compiler Design
Hint
Use the Python built-in types as values in the dictionary.
3
Convert variable values
Create a new dictionary called converted_variables that uses a for loop with variables var and (typ, val) to iterate over variables.items(). Inside the loop, convert val to the correct type using conversion_rules[typ] and store the result in converted_variables[var].
Compiler Design
Hint
Use a for loop to apply the conversion function to each value.
4
Complete with display structure
Create a list called display_list that contains strings formatted as f"{var}: {converted_variables[var]} ({type(converted_variables[var]).__name__})" for each var in converted_variables using a list comprehension.
Compiler Design
Hint
Use a list comprehension to create the formatted strings for display.
Practice
(1/5)
1. What is type coercion in compiler design?
easy
A. A process to optimize code execution speed
B. Manual conversion of one data type to another by the programmer
C. A syntax error caused by incompatible types
D. Automatic conversion of one data type to another by the system
Solution
Step 1: Understand the definition of type coercion
Type coercion means the system automatically changes one data type to another without programmer intervention.
Step 2: Differentiate from type conversion
Type conversion is manual, done by the programmer, unlike coercion which is automatic.
Final Answer:
Automatic conversion of one data type to another by the system -> Option D
Quick Check:
Type coercion = automatic conversion [OK]
Hint: Coercion is automatic, conversion is manual [OK]
Common Mistakes:
Confusing coercion with manual conversion
Thinking coercion causes errors
Assuming coercion is optional
2. Which of the following is a correct example of explicit type conversion?
easy
A. int_value = int('123')
B. result = 5 + '5'
C. value = 10.5 + 2
D. x = 'hello' + 5
Solution
Step 1: Identify explicit type conversion syntax
Explicit conversion uses functions like int(), float(), str() to manually change types.
Step 2: Check each option
int_value = int('123') uses int('123') which converts string '123' to integer 123 explicitly.
Final Answer:
int_value = int('123') -> Option A
Quick Check:
Explicit conversion uses functions like int() [OK]
Hint: Look for functions like int(), float(), str() for explicit conversion [OK]
Common Mistakes:
Confusing implicit coercion with explicit conversion
Assuming adding string and number works without conversion
Ignoring type conversion functions
3. What will be the output of this pseudo-code?
var a = '10';
var b = 5;
var c = a + b;
medium
A. 15
B. TypeError
C. '105'
D. '15'
Solution
Step 1: Identify types of variables
Variable a is a string '10', b is a number 5.
Step 2: Understand type coercion in addition
Adding string and number causes number to be coerced to string, so '10' + '5' = '105'.
Final Answer:
'105' -> Option C
Quick Check:
String + Number = String concatenation [OK]
Hint: Adding string + number converts number to string [OK]
Common Mistakes:
Assuming numeric addition happens
Expecting integer 15 as output
Ignoring type coercion rules
4. Identify the error in this pseudo-code involving type coercion:
var x = '20';
var y = x - 5;
var z = y + '5';
medium
A. Error in adding number to string in last line
B. No error, all operations valid
C. Error in subtracting number from string
D. Error in variable declaration syntax
Solution
Step 1: Analyze subtraction operation
Subtracting 5 from string '20' coerces '20' to number 20, so 20 - 5 = 15.
Step 2: Analyze addition operation
Adding number 15 and string '5' coerces 15 to string '15', so '15' + '5' = '155'.
Final Answer:
No error, all operations valid -> Option B
Quick Check:
Subtraction coerces string to number, addition coerces number to string [OK]
Hint: Subtraction forces numeric coercion, addition may cause string coercion [OK]
Common Mistakes:
Thinking subtraction with string causes error
Assuming addition with string and number is invalid
Confusing coercion direction
5. You have a list of mixed types: ["1", 2, "3", 4]. How can you convert all elements to integers using type coercion and conversion?
hard
A. Use a loop to apply explicit conversion function int() on each element
B. Add 0 to each element to force coercion to integer
C. Concatenate all elements as strings then convert to integer
D. Use a built-in function that automatically converts mixed lists
Solution
Step 1: Understand the list elements
The list contains strings and integers mixed together.
Step 2: Apply explicit conversion
Using a loop to apply int() on each element converts strings like '1' and '3' to integers 1 and 3, keeping integers unchanged.
Final Answer:
Use a loop to apply explicit conversion function int() on each element -> Option A
Quick Check:
Explicit conversion with int() on each element [OK]
Hint: Convert each element explicitly with int() in a loop [OK]
Common Mistakes:
Assuming adding 0 coerces strings to integers
Trying to convert entire list at once without loop
Expecting automatic conversion of mixed lists
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.