{
  "deck_name": "Python Fundamentals",
  "cards": [
    { "question": "What is the difference between a list and a tuple in Python?", "answer": "Both are ordered sequences; lists are mutable, while tuples are immutable." },
    { "question": "What does a Python dictionary store?", "answer": "Key-value pairs, with unique hashable keys mapping to values." },
    { "question": "What property makes a set useful?", "answer": "It stores unique hashable elements and supports membership tests and set operations." },
    { "question": "What does a list index of -1 refer to in Python?", "answer": "The final element of the list, if the list is not empty." },
    { "question": "What does the slice items[a:b] include?", "answer": "Elements from index a up to, but not including, index b." },
    { "question": "What does an if statement do?", "answer": "It conditionally executes a block when its expression evaluates to true." },
    { "question": "What values does range(stop) produce?", "answer": "Integers starting at 0 and increasing by 1, stopping before stop." },
    { "question": "What does a for loop iterate over in Python?", "answer": "Items from an iterable, such as a list, string, dictionary, or range." },
    { "question": "When is a while loop useful?", "answer": "When a block should repeat as long as a condition remains true." },
    { "question": "What is the difference between return and print inside a function?", "answer": "return sends a value back to the caller; print writes text to an output stream." },
    { "question": "What happens when a Python function reaches the end without a return statement?", "answer": "It returns None." },
    { "question": "What is a default argument value?", "answer": "A value used for a parameter when the caller does not supply that argument." },
    { "question": "What is a keyword argument in a function call?", "answer": "An argument passed by naming its parameter, such as count=3." },
    { "question": "What does enumerate(iterable) provide in a loop?", "answer": "Pairs containing an index and the corresponding item from the iterable." },
    { "question": "What is a list comprehension?", "answer": "A concise expression for constructing a list by transforming or filtering values from an iterable." },
    { "question": "What is the purpose of try and except?", "answer": "They let code handle selected exceptions raised while executing a protected block." },
    { "question": "What is the difference between == and is in Python?", "answer": "== compares values for equality; is tests whether two references point to the same object." },
    { "question": "Why should a mutable default value usually be avoided in a function definition?", "answer": "The same object is reused across calls, so mutations can unexpectedly persist between calls." },
    { "question": "What does dict.get(key, default) do?", "answer": "It returns the value for key if present, otherwise the supplied default or None." },
    { "question": "Why does Python use indentation in compound statements?", "answer": "Indentation marks the statements that belong to a block, such as a function or loop body." }
  ]
}
