Return True if array contains a 2 or a 3
python, python-2.7
Solution
Your first one doesn't work because the `for` loop in Python isn't the same as the `for` loop in other languages. Instead of iterating over the indices, it iterates over the actual elements.
`for item in nums` is roughly equivalent to:
for (int i = 0; i < nums.length; i++) {
int item = nums[i];
...
}
Your second one doesn't work because it returns `False` too soon. If the loop encounters a value that isn't `2` or `3`, it returns `False` and doesn't loop through any other elements.
Change your loop to this:
def has23(nums):
for i in nums:
if i == 2 or i == 3:
return True # Only return `True` if the value is 2 or 3
return False # The `for` loop ended, so there are no 2s or 3s in the list.
Or just use `in`:
def has23(nums):
return 2 in nums or 3 in nums
Problem
I'm having trouble with this CodingBat problem: Given an int array length 2, return True if it contains a 2 or a 3. I've tried two different ways to solve this. Can anyone explain what I'm doing wrong? ``` #This one says index is out of range, why? def has23(nums): for i in nums: if nums[i]==2 or nums[i]==3: return True else: return False ``` ``` #This one doesn't past the test if a user entered 4,3. #It would yield False when it should be true. Why? def has23(nums): for i in nums: if i==2 or i==3: return True else: return False ```