放置返回false

我对编码很陌生,两周后。所以如果这是一个非常愚蠢的问题,我深表歉意。


我一直在尝试完成以下codingbat问题:


给定一个整数数组,如果数组中的前 4 个元素之一是 9,则返回 True。数组长度可能小于 4。


为什么下面的代码没有返回正确的答案?


def array_front9(nums):

  if len(nums)>4:

    count = 4

  else:

    count = len(nums)


  for i in range(0,count):

    if nums[i]==9:

      return True

    else:  

      return False

如果 return False 放在新行上而不是在循环中,它就可以工作。


有人可以向我解释一下吗。


慕斯王
浏览 147回答 3
3回答

慕后森

在循环的第一次迭代中,循环检查是否nums[0]为 9 并始终返回Trueor False; 您没有机会检查其余元素。你应该只True在被检查的元素是 9 时返回,并且False只在前四个元素失败时返回,即在循环之外。def array_front9(nums):     return 9 in nums[:4]

catspeake

代码中的问题是,如果列表中的第一个数字不是 9,那么循环将停止并且函数执行将停止它,因为return False处于 else 条件。def array_front9(nums):  count = [len(nums), 4][len(nums) > 5]  for i in range(count):    if nums[i] == 9:      return True  return False

猛跑小猪

我认为你需要:def array_front9(nums):&nbsp; &nbsp; count = 4&nbsp; &nbsp; if len(nums)<4:&nbsp; &nbsp; &nbsp; &nbsp; count = len(nums)&nbsp; &nbsp; if 9 in nums[:count]:&nbsp; &nbsp; &nbsp; &nbsp; return True&nbsp; &nbsp; return False你的代码有什么问题if nums[i]==9:&nbsp; &nbsp; &nbsp; return Trueelse:&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; return False在上面的行中,您只是检查第一个值,如果它是 9,那么它返回 True,否则返回 False
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python