【问题标题】:007 spy question in python. what am i missing?python中的007间谍问题。我错过了什么?
【发布时间】:2022-01-13 12:02:20
【问题描述】:

我正在尝试解决一个名为 spy game 的问题,如果顺序为 0,0,7,您需要返回 true,但它们不需要连续,否则,它应该返回 false。 例如:

 spy_game([1,2,4,0,0,7,5]) should return True
 spy_game([1,0,2,4,0,5,7]) should return True
 spy_game([1,7,2,0,4,5,0]) should return False

这是我的代码:

def spy_game(nums):
    for x in range(4):
        if nums[x]==0:
            for y in range(x+1,len(nums)):
                if nums[y]==0:
                    for z in range(y+1,len(nums)):
                        if nums[z]==7:
                            return True

我缺少的是,如果给定条件为假,则返回为假。我找不到合适的地方来设置 return false ,否则会影响解决方案。我的解决方案似乎适合返回 true。我该如何解决这个问题?提前致谢。

【问题讨论】:

  • 如果当前函数完成但没有返回 True,你想return False。目前您的函数包含单个 for 循环,因此您的 return False 将在循环之后进行。
  • 问题是如果我在最后写 return false 就像:如果 nums[z]==7: return True else: return False 它只会在有两个零和没有 7 之后,如果我写 return false 之后它会影响解决方案。
  • 循环结束后返回 False 对解决方案有何影响?
  • 不,不是elseif 之后。就像整个循环之后的最后一行一样!

标签: python list function


【解决方案1】:

您可以删除所有不需要的号码并搜索“007”,例如:

myList = [1,2,4,0,0,7,5]
myList = [str(x) for x in l if x==0 or x==7 ] #just 0 or 7
strOfMyList = ''.join(myList)
print(strOfMyList.find('007')>=0) 
#find return -1 if doesn't find else the first occurrence

在函数中它看起来像:

def spy_game(nums):
   nums = [str(x) for x in nums if x==0 or x==7 ]
   strOfMyList = ''.join(nums)
   return strOfMyList.find('007')>=0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2020-09-21
    • 2017-09-16
    • 2015-02-21
    相关资源
    最近更新 更多