python - Python - 使用函数确定项目是否在列表中
问题描述
我正在尝试用 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()
返回一个字符串,因此您需要将其转换为 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.')
推荐阅读
- reactjs - 在 React Hooks 中处理常量的最佳实践
- html - 通过 cpanel.yml(通配符除外)上传子文件夹的 Bash 语法
- python - 总结python中多个函数的输出
- gis - Netlogo GIS 扩展:光栅不会修补 NetLogo 世界
- python - 在两个列表之间查找不同的项目
- python - 如何在python中发送带有scrapy或请求的if-none-match标头?
- reactjs - 如何关闭 Openlayers 自定义控件?
- zig - zig 创建一个 C 库
- flex-lexer - Flex 令人困惑地逐个字符地转换字符串
- sql-server - 子查询在 Iif 条件下返回超过 1 个值