Python - определить, есть ли элемент в списке с помощью функции - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь написать функцию в Python, чтобы определить, есть ли элемент в списке. Я пробовал варианты этого кода.

Независимо от того, как я его пробую, он всегда возвращает FALSE Boolean-значение. Даже если я помещу команды печати в функции, он печатает только с результатами для ложного значения. Я почти уверен, что передаю список функции должным образом, но не могу понять, почему он определяет только значения 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.') 

Ответы [ 4 ]

1 голос
/ 18 февраля 2020

Здесь происходит несколько вещей:

  • 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.')
0 голосов
/ 18 февраля 2020

Есть более простой способ сделать это. Обратите внимание, что вводом будет строка типа, поэтому вам нужно преобразовать в 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")

0 голосов
/ 18 февраля 2020

Вы не устанавливаете s - вы запускаете функцию, но она не присваивается s, поэтому измените на:

s = newFunction(newList, r, s)

Вы также можете удалить 'z' в качестве аргумента и вместо этого возвращайте False / True в каждом условии If.

0 голосов
/ 18 февраля 2020

Вы должны сохранить результат своей функции и преобразовать ввод в целое число, чтобы оно работало.

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
...