Возвращает True, если массив содержит 2 или 3

У меня проблемы с этой проблемой CodingBat:

Если задана длина массива int 2, верните True, если она содержит 2 или 3.

Я пробовал два разных способа решить эту проблему. Может ли кто-нибудь объяснить, что я делаю неправильно?

#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 

One Solution collect form web for “Возвращает True, если массив содержит 2 или 3”

Ваш первый не работает, потому что цикл for в Python не совпадает с циклом for на других языках. Вместо того, чтобы повторять индексы, он выполняет итерацию по фактическим элементам.

for item in nums примерно эквивалентно:

 for (int i = 0; i < nums.length; i++) { int item = nums[i]; ... } 

Ваш второй не работает, потому что он слишком быстро возвращает False . Если цикл встречает значение, которое не равно 2 или 3 , оно возвращает False и не пересекает любые другие элементы.

Измените свой цикл следующим образом:

 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. 

Или просто используйте in :

 def has23(nums): return 2 in nums or 3 in nums 
  • Невозможно импортировать модули, которые есть
  • Pip и Python не согласны с расположением модуля
  • Python: как импортировать все методы и атрибуты из модуля динамически
  • Python: как разобрать тело из сырой электронной почты, учитывая, что у сырой электронной почты нет тега «Body» или что-то еще
  • Python - если нет инструкции с 0.0
  • как заменить только определенные слова в файле
  • Как указать пространство имен для тега xml с помощью BeautifulSoup4?
  • Ошибка при создании проекта Scrapy через startproject
  • Python - лучший язык программирования в мире.