Hint: If condition fails, raise stops and shows error message [OK]
Common Mistakes:
Expecting function to return 'Access granted' anyway
Confusing error message with print output
Thinking raise prints message but continues
4. Find the error in this code snippet:
def check_number(num):
if num < 0:
raise 'Negative number error'
return 'Number is positive'
print(check_number(-5))
medium
A. You cannot raise a string directly; it must be an Exception type.
B. The raise statement is missing parentheses.
C. The function should return None instead of a string.
D. The if condition should be num > 0.
Solution
Step 1: Check the raise statement
The code tries to raise a string directly, which is not allowed in Python. Only Exception types can be raised.
Step 2: Correct way to raise errors
Use raise ValueError('message') or another Exception class, not a plain string.
Final Answer:
You cannot raise a string directly; it must be an Exception type. -> Option A
Quick Check:
raise must use Exception type, not string [OK]
Hint: Always raise Exception objects, not strings [OK]
Common Mistakes:
Raising strings instead of Exception classes
Forgetting to include parentheses with message
Changing condition incorrectly
5. You want to create a function validate_score(score) that raises a ValueError with the message "Score must be between 0 and 100" if the score is outside this range. Which code correctly implements this?
hard
A. def validate_score(score):
if score < 0 or score > 100:
raise ValueError('Score must be between 0 and 100')
return 'Valid score'
B. def validate_score(score):
if 0 <= score <= 100:
raise ValueError('Score must be between 0 and 100')
return 'Valid score'
C. def validate_score(score):
if score < 0 and score > 100:
raise ValueError('Score must be between 0 and 100')
return 'Valid score'
D. def validate_score(score):
if score == 0 or score == 100:
raise ValueError('Score must be between 0 and 100')
return 'Valid score'
Solution
Step 1: Understand the valid range condition
The score is valid if it is between 0 and 100 inclusive. So invalid means less than 0 or greater than 100.
Step 2: Check the if condition logic
def validate_score(score):
if score < 0 or score > 100:
raise ValueError('Score must be between 0 and 100')
return 'Valid score' correctly uses if score < 0 or score > 100 to detect invalid scores and raise the error.
Final Answer:
def validate_score(score):
if score < 0 or score > 100:
raise ValueError('Score must be between 0 and 100')
return 'Valid score' -> Option A
Quick Check:
Use or for invalid range, raise error if outside [OK]
Hint: Raise error if score is less than 0 or greater than 100 [OK]