Skip to contentSkip to navigation
MODULE 01 · LESSON 05
Python Basics

Core Data Types & Type Conversion

Work with integers, floats, strings, booleans, runtime inspection with type(), and explicit type casting.

Core Learning Milestones:
Arbitrary int
PyLongObject Heap
IEEE 754 Float
64-bit precision
Implicit Promotion
int + float -> float
Explicit Casting
int(), float(), bool()
Estimated Time
15 Minutes
Comprehensive deep dive
Difficulty Level
Beginner Friendly
Step-by-step guidance
Knowledge Check
15 Questions
+35 XP Potential
01 / Foundations

The Philosophy of Python Types & The Dynamic Typing Model

In traditional compiled systems like C, C++, or Java, data types belong to variable memory slots. When you write int x, the compiler permanently allocates a 32-bit slot in RAM. If a calculation exceeds 2,147,483,647, the number silently wraps around into negative values, corrupting financial ledgers and mission-critical software.

When Guido van Rossum designed Python, he decoupled data types from variables entirely. In Python, types belong strictly to objects on the heap, never to variable names. Furthermore, Python integers utilize dynamic arrays of digits that expand automatically, guaranteeing arbitrary precision with zero risk of numerical overflow.

Technically, computer scientists describe Python's scalar type system through three foundational pillars:

1. Arbitrary int PrecisionPyLongObject

Integers use dynamic digit arrays in memory. They never wrap around or overflow, whether calculating 10**2 or 10**100!

2. IEEE 754 Floats & DecimalsPrecision

Python floats wrap C 64-bit doubles. For exact base-10 financial ledgers, Python includes the dedicated decimal.Decimal standard module.

3. Strong Typing & CastingType Safety

Python is strongly typed: it rejects incompatible operations with TypeError. Explicit constructors (int(), float(), str()) convert data safely.

Because types attach to objects and operations are strongly enforced, Python prevents silent data corruption while maintaining the joyful flexibility of dynamic scripting.

Think of it like this:

Think of Python data types like standardized shipping containers: a string is a container designed for raw text characters, an integer is an expandable steel vault for exact counts, a float is a graduated measuring cylinder for continuous measurements, and a boolean is a two-position light switch. When you cast data (e.g. int("42")), you aren't changing the original text; you are unpacking the cargo from a shipping container and placing it into a numeric vault!

Why Python Shines: Clarity & Ergonomics

Scalar Data Types: Fixed-Width Overflow vs. Infinite Dynamic Precision

Zero Overflow Errors

Compare how traditional languages suffer from silent 32-bit integer overflow wrapping—while Python calculates arbitrary-scale numbers with effortless mathematical precision:

Traditional Languages (C / Java)32-Bit Overflow Risk
// Max signed 32-bit int: 2,147,483,647
int balance = 2147483647;
balance = balance + 1;
// balance is now -2147483648! (Corrupted)

Silent wrap-around corrupts calculations without throwing a runtime exception.

The Python WayArbitrary PyLong Precision
// Unlimited digit expansion
balance = 2_147_483_647
balance = balance + 10**20

CPython allocates memory dynamically to accommodate numbers of any magnitude.

data_types_precision.py — Press 'Run Code' to execute in your browser
# Python handles massive precision without overflow
big_int = 2 ** 100
print(f"2**100 = {big_int}")

# Explicit casting from raw string payload
raw_price = "149.95"
price = float(raw_price)
tax = price * 0.08
print(f"Item Price: ${price:.2f}, Tax: ${tax:.2f}")
Data Types & Casting Glossary: Core Type Architecture

Master the core architectural concepts governing Python scalar data types, numeric precision, and explicit type conversion:

PyLongObjectArbitrary int

The underlying C structure implementing Python integers as dynamic arrays of 30-bit digits (ob_digit[]). Memory expands as needed so numbers never overflow.

IEEE 754 FloatBinary Float

The international standard for binary floating-point representation used by C doubles. Certain decimal fractions like 0.1 + 0.2 produce approximate values (0.30000000000000004).

Type WideningPromotion

Python's automatic numeric promotion hierarchy (bool -> int -> float -> complex). Adding an integer to a float automatically widens the integer to a float without data loss.

Truthiness (__bool__)Boolean Value

The protocol governing how objects evaluate in boolean contexts. Numeric 0, empty strings "", and None evaluate to False; non-empty values evaluate to True.

02 / Syntax Anatomy

Interactive Syntax Inspector: Anatomy of a Type Casting Statement

Click any token below to inspect!

Every token in a Python type conversion has a specific role. Click each part of the code below to see what it does, why it matters, and common pitfalls to avoid:

float("149.95")is the explicit constructor cast (Constructor Parsing)
Constructor Parsing

Calling float(...) invokes the type constructor function. CPython parses the string literal "149.95", verifies its numeric characters, and creates a heap-allocated PyFloatObject with 64-bit IEEE 754 precision.

Common Pitfall: Passing malformed strings like currency symbols float("$149.95") or text float("N/A"), which triggers fatal ValueError: could not convert string to float. Strip symbols first!
03 / Execution Architecture

CPython Type Conversion & Promotion Pipeline

Stage 1: External Ingestion & PyASCIIObject Representation

String Buffer
What Happens in CPython:

CPython ingests the external textual payload as an immutable Unicode text buffer.

CPython Runtime Internals:

String Representation: When parsing inputs from APIs or terminals (e.g. '149.95'), CPython allocates a PyASCIIObject. The string stores ASCII character bytes in contiguous memory, but cannot be used in arithmetic without raising TypeError.

Input Expression
raw_price = "149.95"
CPython Engine State
PyASCIIObject: '149.95' (ASCII buffer on heap)
04 / Architectural Comparison Matrix

Scalar Type & Conversion Decision Matrix

How do Python integers and floating-point numbers differ internally?

Option A / Left Boundary

int (PyLongObject): Unbounded precision using variable-length arrays of 30-bit digits. Integer overflow is structurally impossible in pure Python.

Option B / Right Boundary

float (PyFloatObject): Fixed 64-bit IEEE 754 double precision. Cannot represent certain base-10 fractions exactly (e.g. 0.1 + 0.2 != 0.3).

Architectural Takeaway: Use int for discrete counts, IDs, and currency cents. Use float for scientific measurements, and decimal.Decimal for financial ledgers.
05 / Syntax Reference

Scalar Literals, Casting Constructors & Type Introspection

Executable Sandbox

Every scalar syntax pattern in Python: literals, type() inspection, isinstance() inheritance checks, true division vs floor division, explicit casts, and truthiness evaluation:

data_types_syntax_reference.py
# 1. Scalar literals and type inspection
count = 42
ratio = 0.75
label = "PyLabs"
is_ready = True

print(type(count))     # <class 'int'>
print(type(ratio))     # <class 'float'>
print(type(label))     # <class 'str'>
print(type(is_ready))  # <class 'bool'>

# 2. Type validation with isinstance (supports inheritance)
print(isinstance(count, int))        # True
print(isinstance(is_ready, bool))   # True
print(isinstance(is_ready, int))    # True (bool subclasses int!)

# 3. Implicit type promotion (integer promoted to float)
subtotal = 100        # int
tax = 8.5            # float
total = subtotal + tax  # 108.5 (float)

# 4. True division always returns a float in Python 3
print(10 / 2)   # 5.0 (float)
print(10 // 2)  # 5 (int - floor division)

# 5. Explicit casting to int (truncates towards zero)
print(int(9.99))   # 9 (decimal portion discarded, NOT rounded)
print(int(-3.8))   # -3
print(int("500"))  # 500

# 6. Explicit casting to float
print(float(25))        # 25.0
print(float("3.1415"))  # 3.1415

# 7. Explicit casting to str
print(str(100) + " items")  # "100 items"

# 8. Boolean truthiness rules
print(bool(0))       # False
print(bool(0.0))     # False
print(bool(""))      # False (empty string)
print(bool("hello")) # True
print(bool("False")) # True (WARNING: non-empty string is True!)
print(bool(-5))      # True (non-zero numbers are True)

# 9. Parsing numeric strings with underscores
large_num = int("1_000_000")  # 1000000

# 10. Base conversion during integer parsing
hex_val = int("0xFF", 16)   # 255
bin_val = int("1010", 2)    # 10
06 / Hands-on Walkthroughs

Multi-Tier Implementation Walkthroughs

3 Progressive Engineering Levels
Level 1 · Foundation

User Input Simulation and Explicit Type Casting

Beginner
Engineering Problem:

Create a script that takes raw string inputs representing product unit price, order quantity, and membership status. Cast the strings into their appropriate data types, compute order subtotal, and print the resulting types.

Production Implementation:
Level 2 · Applied

Defensive Ingestion Pipeline with ValueError Exception Handling

Intermediate
Engineering Problem:

Build an IoT sensor data sanitization function that parses an array of dirty string sensor telemetry readings into floating-point numbers, filtering out corrupt or non-numeric tokens with error handling.

Production Implementation:
Level 3 · Architecture

Financial Exact Decimal vs IEEE 754 Floating-Point Comparison

Advanced
Engineering Problem:

Demonstrate the IEEE 754 binary floating-point representation anomaly (0.1 + 0.1 + 0.1) and implement an exact currency accounting calculation using Python's standard library decimal module.

Production Implementation:
07 / Common Anti-Patterns

6 Critical Traps in Scalar Types & Casting

Defensive Best Practices
Assuming bool('False') Evaluates to False
Common Trap
Anti-Pattern Code
user_input = "False"
is_enabled = bool(user_input)
print(is_enabled)
Clean Production Fix
user_input = "False"
is_enabled = (user_input.strip().lower() == "true")
print(is_enabled)
Error: Prints True! Disastrous in authorization or feature flag checks.

In Python, bool(x) evaluates whether the object is empty. Any string containing characters—even the word 'False' or '0'—has a length greater than zero and therefore evaluates to True.

Truncation Instead of Rounding with int()
Common Trap
Anti-Pattern Code
rating = 4.9
stars = int(rating)
print(stars)  # Displays 4 instead of 5!
Clean Production Fix
rating = 4.9
stars = round(rating)  # Returns 5
Error: int() discards the fractional portion completely without rounding.

int() performs truncation towards zero, not mathematical rounding.

Direct String Concatenation with Numbers (TypeError)
Subtle Trap
Anti-Pattern Code
port = 8080
url = "http://localhost:" + port
Clean Production Fix
port = 8080
url = f"http://localhost:{port}"  # Recommended: f-string
# Alternative: url = "http://localhost:" + str(port)
Error: TypeError: can only concatenate str (not "int") to str

Python is strongly typed and refuses to implicitly convert numbers to strings during addition.

Unchecked ValueError on Malformed Numeric Strings
Subtle Trap
Anti-Pattern Code
user_age = int("twenty-five")
Clean Production Fix
raw_input = "twenty-five"
try:
    user_age = int(raw_input)
except ValueError:
    user_age = 0  # Default fallback
Error: ValueError: invalid literal for int() with base 10: 'twenty-five'

int() expects valid numeric digit characters. Passing alphabetical words raises a ValueError.

Mixing Division Operators (/ vs //)
Architecture Trap
Anti-Pattern Code
page_index = 10 / 2
# Using float as a list index:
items[page_index]
Clean Production Fix
page_index = 10 // 2  # Floor division produces int 5
items[page_index]
Error: TypeError: list indices must be integers or slices, not float

In Python 3, the single slash / always returns a float (5.0), even if the division divides evenly.

Floating-Point Precision Mismatch in Equality Checks
Architecture Trap
Anti-Pattern Code
if 0.1 + 0.2 == 0.3:
    print("Match")
Clean Production Fix
import math
if math.isclose(0.1 + 0.2, 0.3):
    print("Match")
Error: Condition evaluates to False silently; block never executes.

IEEE 754 binary floating-point rounding yields 0.30000000000000004.

08 / Real-World Systems

How Top Tech Companies Enforce Scalar Types

Foundation Script

Stripe Webhook Event Amount Deserializer

Financial gateways parse incoming webhook payload strings into verified integer cents.

FinTech & Banking
Stripe Webhook Event Amount Deserializer
payload_amount_str = "12500"  # $125.00 in cents
payload_currency = "usd"

amount_cents = int(payload_amount_str)
amount_dollars = amount_cents / 100

print("Transacted Cents:", amount_cents, type(amount_cents))
print("Display Dollars:", f"${amount_dollars:.2f}", payload_currency.upper())
Verified Execution Output
Transacted Cents: 12500 <class 'int'>
Display Dollars: $125.00 USD
Stripe strictly avoids floating-point amounts in database records. All amounts are cast to integer cents (amount_cents = int(...)), ensuring zero loss of precision across financial ledgers.
Scaled Service · Applied

FastAPI HTTP Query Parameter Parser

Web frameworks convert URL query strings into verified boolean and integer endpoint arguments.

Web Development & APIs
FastAPI HTTP Query Parameter Parser
raw_query_limit = "25"
raw_include_deleted = "0"

limit = int(raw_query_limit)
include_deleted = bool(int(raw_include_deleted))

print("Page Limit:", limit, type(limit))
print("Include Deleted Records:", include_deleted, type(include_deleted))
Verified Execution Output
Page Limit: 25 <class 'int'>
Include Deleted Records: False <class 'bool'>
Query parameters arrive as strings. Notice how casting bool(int("0")) properly yields False, allowing binary database flags to be parsed cleanly.
Enterprise · Architecture

Hardware Microcontroller Sensor Telemetry Normalizer

Edge gateways parse binary and hexadecimal hardware register strings into floating-point voltages.

IoT & Embedded Systems
Hardware Microcontroller Sensor Telemetry Normalizer
register_hex = "0x028A"  # Raw 12-bit ADC reading
raw_adc = int(register_hex, 16)  # Base 16 parsing
voltage = (raw_adc / 4095.0) * 3.3

print("ADC Integer:", raw_adc)
print("Measured Voltage:", round(voltage, 3), "V")
Verified Execution Output
ADC Integer: 650
Measured Voltage: 0.524 V
Embedded data arrives as hexadecimal strings. Specifying base 16 in int(register_hex, 16) converts hexadecimal registers directly into integer counts, enabling voltage calculations.
Enterprise · Architecture

CSV ETL Pipeline Column Type Promotion

Data pipelines inspect string column values and promote them to appropriate numerical types for warehouse analytics.

Data Engineering & Analytics
CSV ETL Pipeline Column Type Promotion
raw_csv_row = ["42", "98.6", "true"]

parsed_id = int(raw_csv_row[0])
parsed_temp = float(raw_csv_row[1])
parsed_active = raw_csv_row[2].lower() == "true"

print("Row Schema:", type(parsed_id).__name__, type(parsed_temp).__name__, type(parsed_active).__name__)
Verified Execution Output
Row Schema: int float bool
ETL pipelines parse incoming textual rows into strongly typed scalar schemas before writing to Parquet files or SQL databases.
09 / Industry Architecture Case Study

Robinhood: High-Velocity Order Clearing & Decimal Invariance

Enterprise Ledger
RH

Robinhood Production Architecture

Millions of daily retail stock, options, and cryptocurrency trades processed across microservices.

The Scale & Architectural Challenge:

Robinhood handles high-velocity order routing where fractional share orders require strict precision. In trading engines, implicit floating-point conversions can introduce sub-penny rounding discrepancies that violate SEC regulatory auditing standards. Robinhood's backend services enforce rigid type casting contracts: float arithmetic is strictly barred from all transaction-clearing and ledger accounting code. Every price, fee, and order quantity is cast explicitly to `Decimal` or integer satoshis/cents at the API gateway layer before any math is executed. Unit tests enforce zero implicit float promotion across the financial trade settlement path.

Robinhood Ledger Implementation Pattern:
robinhood_order_total.py
# Financial trade calculation pattern using Decimal
from decimal import Decimal

def calculate_order_total(shares: str, price_per_share: str, commission_pct: str) -> Decimal:
    """Compute exact total trade cost with zero floating point drift."""
    qty = Decimal(shares)
    price = Decimal(price_per_share)
    fee_rate = Decimal(commission_pct)
    
    subtotal = qty * price
    commission = subtotal * fee_rate
    return subtotal + commission

trade_cost = calculate_order_total("15.5", "182.40", "0.001")
print("Exact Trade Settlement:", trade_cost, "USD")
Robinhood Engineering Principles:
Principle 01

Never use raw floats for currency calculations; use integer minor units or the Decimal module.

Principle 02

Cast incoming string data explicitly at the ingestion boundary before it enters business logic.

Principle 03

Defend against unexpected type promotion by asserting types with isinstance().

10 / Guided Coding Labs

Interactive Coding Labs

3 Hands-on Labs
1

Convert and Format Order Line Item

Type: Code Completion · Difficulty: Beginner
+5 XP
Lab Instructions:

Cast raw_price to a float and raw_qty to an int, multiply them together to compute total, and print the result.

Starter Template:
# Convert string values to numbers and calculate total cost
raw_price = "29.99"
raw_qty = "4"

# 1. Cast raw_price to float
# 2. Cast raw_qty to int
# 3. Calculate total = price * qty
# Your code here:

print("Total Cost:", total)
Automated Test Verifications:
assert globals().get("total") == 119.96, "total must equal 119.96"
assert "Total Cost: 119.96" in OUTPUT, "Output must display Total Cost: 119.96"
Need help or want to verify your approach?
2

Safe Integer Parser Function

Type: Code Completion · Difficulty: Intermediate
+5 XP
Lab Instructions:

Wrap int(val) in a try...except block. If a ValueError is raised, return the default parameter value.

Starter Template:
# Complete the safe_int_cast function
def safe_int_cast(val: str, default: int = 0) -> int:
    """Return int(val), or return default if ValueError occurs."""
    # Your code here:
    pass

print(safe_int_cast("150"))
print(safe_int_cast("invalid"))
Automated Test Verifications:
assert safe_int_cast("42") == 42, "safe_int_cast('42') must return 42"
assert safe_int_cast("bad", default=-1) == -1, "safe_int_cast('bad', default=-1) must return -1"
assert "150\n0" in OUTPUT, "Printed output must display 150 followed by 0."
Need help or want to verify your approach?
3

Truthiness Evaluation Table Generator

Type: Mini-Project · Difficulty: Intermediate
+10 XP
Lab Instructions:

Loop through test_values and for each item, print repr(val), an arrow '->', and bool(val) separated by spaces.

Starter Template:
# Print truthiness evaluation for a list of test values
test_values = [0, 1, "", "hello", [], 0.0]

# Loop over test_values and print: repr(val), "->", bool(val)
# Your code here:
Automated Test Verifications:
assert "0 -> False" in OUTPUT, "0 must evaluate to False"
assert "1 -> True" in OUTPUT, "1 must evaluate to True"
assert "'' -> False" in OUTPUT, "Empty string must evaluate to False"
Need help or want to verify your approach?
11 / Open-Ended Practice Tasks

Production-Grade Engineering Challenges

Self-Directed Practice
1

Sensor Packet Type Normalization Engine

~15m

Create a data validation engine that parses raw IoT dictionary payloads containing string values for device_id, temperature_c, humidity_pct, and battery_ok into a verified, strongly-typed dictionary.

Technical Requirements:
Cast device_id to str.
Cast temperature_c to float rounded to 1 decimal place.
Cast humidity_pct to int.
Cast battery_ok ('1' or '0') to bool.
Print the verified typed dictionary.
Starter Code
raw_packet = {
    "device_id": "sensor-99",
    "temperature_c": "24.682",
    "humidity_pct": "55",
    "battery_ok": "1"
}
# Parse and validate packet
Test Verification:
assert "'temperature_c': 24.7" in OUTPUT, "temperature_c must be float 24.7"
assert "'humidity_pct': 55" in OUTPUT, "humidity_pct must be int 55"
assert "'battery_ok': True" in OUTPUT, "battery_ok must be bool True"
2

E-Commerce Discount & Tax Order Calculator

~15m

Develop an e-commerce checkout calculation script that accepts string product costs, computes integer percentage discounts and state taxes with implicit type promotion, and outputs formatted receipts.

Technical Requirements:
item_price = '89.50', coupon_discount_pct = 15 (int), tax_rate = 0.085 (float).
Cast item_price to float.
Compute discount amount and taxable subtotal.
Compute tax and final total rounded to 2 decimal places.
Starter Code
item_price_str = "89.50"
coupon_discount_pct = 15
tax_rate = 0.085
# Compute final total
Test Verification:
assert "Final Total: $82.54" in OUTPUT, "Final total must equal $82.54 ($89.50 - $13.425 = $76.075 + 8.5% tax = $82.54)"
12 / Key Takeaways & Glossary

Core Architecture Glossary: Key Concepts Demystified

Essential reference terminology defining Python's scalar type system, arbitrary precision arithmetic, and explicit type conversion boundaries:

Py

PyLongObject

CPython's underlying C structure implementing integers as dynamic arrays of 30-bit digits (ob_digit[]), automatically expanding memory so integers never overflow.

Flt

IEEE 754 Float

Standard 64-bit binary floating-point representation storing numbers in sign, exponent, and fraction bits. Use decimal.Decimal when exact financial precision is required.

Cast

Explicit Casting

Invoking type constructors int(), float(), or str() to unpack and transform data across memory boundaries, throwing ValueError on invalid input.

Bool

Truthiness (__bool__)

CPython's boolean evaluation protocol where zero, empty collections, and None resolve to False, and non-empty instances resolve to True.

Architectural Review Points:
  • Python's primary scalar data types are int (whole numbers), float (decimals), str (text), and bool (logical True/False).
  • Python is dynamically and strongly typed: types are bound to objects at runtime, and incompatible type operations are rejected.
  • Implicit type conversion (promotion) converts integers to floats automatically during mixed arithmetic.
  • The true division operator '/' always returns a float; use floor division '//' to produce an integer quotient.
  • The int() constructor truncates towards zero; use round() for standard mathematical rounding.
  • bool("False") is True because any non-empty string is truthy; compare strings explicitly to parse boolean flags.
  • Use decimal.Decimal for financial applications requiring exact base-10 precision to avoid IEEE 754 floating-point artifacts.
Quick Syntax Reference Table:API Index
type(val) — Inspect runtime data type.
isinstance(val, cls) — Verify object is an instance of a type or subclass.
int(x) — Cast to integer (truncates towards zero).
float(x) — Cast to floating-point number.
str(x) — Convert any object to its string representation.
bool(x) — Convert to boolean (0, 0.0, '', None -> False; others -> True).
13 / Knowledge Assessment Quiz Booster

Self-Check Concept Booster

0 / 7 Answered

Test your understanding with these practice questions before moving to the scored exam. Select an answer to reveal instant feedback and detailed explanations:

1Question 1 of 7
hardconcept

Why is integer overflow impossible in pure standard Python 3?

1/7
14 / Study Guide & FAQ

Frequently Asked Questions & Pro Tips

FAQ & References
Growth Mindset: Strong Typing Protects Production Systems

Mastering scalar types and casting boundaries ensures you never suffer silent data loss or unexpected conversion errors. With Module 1: Python Basics complete, you have built the foundational bedrock for algorithmic problem solving!

Why does 0.1 + 0.2 not equal 0.3 in Python?

Computers use binary (base-2) floating point (IEEE 754). Numbers like 0.1 and 0.2 cannot be represented with finite binary digits, leading to an imperceptible rounding artifact (0.30000000000000004). Use math.isclose() for float comparisons or decimal.Decimal for exact financial arithmetic.

What is the difference between int() and floor division (//)?

int() truncates towards zero (so int(-3.8) is -3). Floor division (//) rounds down towards negative infinity (so -7 // 2 is -4).

Can an integer in Python ever overflow?

No. In Python 3, integers have arbitrary precision. CPython dynamically allocates more digits on the heap as an integer expands. The only constraint is your computer's available RAM.

Why is isinstance() preferred over type() == ...?

isinstance() respects object-oriented inheritance hierarchies. Because bool is a subclass of int, isinstance(True, int) returns True. Direct equality checking type(True) == int returns False, which can break polymorphic code.

Ready for Action

You've Mastered Data Types & Conversion!

You understand arbitrary precision integers, IEEE 754 floats, automatic type promotion, and explicit casting constructors. Now prove your knowledge with hands-on exercises.

Hands-on Code Challenge

Parse raw string payloads and calculate precise monetary totals.

+40 XP Reward

Earn experience points toward your developer rank as soon as you pass.

~3 Minutes to Complete

Bite-sized knowledge check with instant explanations for every question.

Milestone Achieved: Module 01 Completed

Congratulations! You Have Mastered Python Basics

You now understand Python's architecture, the execution engine, variables & references, and scalar type conversion. Next up: Module 02 · Control Flow & Logic.

Your notes

Sign in to keep private notes alongside this lesson.

Sign in to take notes

Core Data Types & Type Conversion practice

Sign-in required

Convert the text "12" to an integer, add 3, and print the result.

Coding Practice is Locked

Sign in to access the interactive Python editor, write and run code checks against automated tests, use hints, and earn XP.

Practice quiz

Check yourself

15 questions with explanations after submission, so you can correct course as you go.

Core Data Types & Type Conversion quiz

Locked

You must be signed in to take this quiz. Sign in to test your understanding, track your answers, and earn XP.

Lesson incomplete

Not completed

Create an ID or sign in to save lesson completion across devices.

Create ID to save
Module lesson progress0/5 complete
Module cheat sheet