【问题标题】:Python - Determine if Item is in a List Using a FunctionPython - 使用函数确定项目是否在列表中
【发布时间】:2020-06-01 23:49:47
【问题描述】:

我正在尝试用 Python 编写一个函数来确定一个项目是否在列表中。我一直在尝试此代码的变体。

无论我如何尝试,它总是返回一个 FALSE 布尔值。即使我将打印命令放在函数中,它也只会打印错误值的结果。我很确定我将列表正确地传递给函数,但我无法弄清楚为什么它只确定 FALSE 值。有什么想法吗?

def newFunction(x, y, z):
   z = 0
   if y in x:
      z = True
   else:
      z = False
   return (z)




newList = [2,4,6,8,10]
r = input ('Enter a number: ')
s = 0
newFunction(newList, r, s)
if s == True:
   print ('The no. IS in the list.')
else:
   print ('The no. IS NOT in the list.') 

【问题讨论】:

  • input() 总是给出字符串,所以你将字符串 "2" 与数字 2 进行比较,它总是错误的。您必须转至int() - r = int( input(... ) )
  • 我认为你也没有使用函数的结果。
  • 顺便说一句:如果你使用return z,那么你应该得到它作为s = newFunction(list, r)
  • 较短的def newFunction(x, y): return (y in x)
  • 对函数参数的任何重新分配都不会反映在调用上下文中(即您不能使用函数来更改变量的值)。

标签: python list function boolean


【解决方案1】:

有一种更简单的方法可以做到这一点。请注意,输入将是字符串类型,因此您需要转换为 int。

newList = [2,4,6,8,10]

def newFunction(x, newList):
    if x in newList:
        return True
    else:
        return False

x = int(input("Enter a number"))
if newFunction(x, newList) == True:
    print("it is in the list")
else:
    print("it is not in the list")

更短的方式:

newList = [2,4,6,8,10]

x = int(input("enter a number"))
if x in newList:
    print("it is in the list")
else:
    print("it is not in the list")

【讨论】:

    【解决方案2】:

    您没有设置s - 您运行该函数但它没有分配给s,因此更改为:

    s = newFunction(newList, r, s)
    

    您还可以删除“z”作为参数,而是在每个 If 条件中返回 False/True。

    【讨论】:

      【解决方案3】:

      这里发生了一些事情:

      • input()返回的是一个字符串,所以需要将其转换为一个int。
      • 您没有对函数返回的值做任何事情。
      • 与上述相关,函数中不需要z参数。您是否期望函数外部的变量值发生变化?
      • 如果您绝对需要明确地将值与布尔值进行比较,请使用is,而不是==。在这种情况下,if found: 就是您所需要的。
      • 函数内部的 if 语句可以完全删除。
      • 变量和函数名称应遵循lower_case_with_underscores 样式。

      重构后的代码如下所示:

      def in_list(targ_list, elem):
          return elem in targ_list
      
      
      nums_list = [2, 4, 6, 8, 10]
      num_in = int(input("Enter a number: "))
      
      res = in_list(nums_list, num_in)
      
      print(res)
      
      if res:
          print('The no. IS in the list.')
      else:
          print('The no. IS NOT in the list.')
      

      【讨论】:

        【解决方案4】:

        您应该保存函数的结果并将输入转换为整数以使其工作。

        def newFunction(x, y, z):
           z = 0
           if y in x:
              z = True
           else:
              z = False
           return (z)
        
        
        newList = [2,4,6,8,10]
        r = input ('Enter a number: ')
        s = 0
        found = newFunction(newList, int(r), s)
        print(found)
        if found == True:
           print ('The no. IS in the list.')
        else:
           print ('The no. IS NOT in the list.') 
        

        您还可以通过使用更简单的功能来改进当前的实现。

        def newFunction(valueList, userInput):
           return userInput in valueList
        

        【讨论】:

          猜你喜欢
          • 2014-05-07
          • 1970-01-01
          • 2017-12-21
          • 2018-11-17
          • 2021-06-25
          • 2016-01-31
          • 2011-07-26
          • 2011-08-20
          • 2010-10-09
          相关资源
          最近更新 更多