为了账号安全,请及时绑定邮箱和手机立即绑定

放置返回false

放置返回false

慕斯王 2022-10-06 15:53:05
我对编码很陌生,两周后。所以如果这是一个非常愚蠢的问题,我深表歉意。我一直在尝试完成以下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 放在新行上而不是在循环中,它就可以工作。有人可以向我解释一下吗。
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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

def array_front9(nums): 
   return 9 in nums[:4]


查看完整回答
反对 回复 2022-10-06
?
catspeake

TA贡献1111条经验 获得超0个赞

代码中的问题是,如果列表中的第一个数字不是 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


查看完整回答
反对 回复 2022-10-06
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

我认为你需要:


def array_front9(nums):

    count = 4

    if len(nums)<4:

        count = len(nums)

    if 9 in nums[:count]:

        return True

    return False

你的代码有什么问题


if nums[i]==9:

      return True

else:  

      return False

在上面的行中,您只是检查第一个值,如果它是 9,那么它返回 True,否则返回 False


查看完整回答
反对 回复 2022-10-06
  • 3 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号