为何Python中`if findme in thislist`判断无法返回True?
问题原因及解决办法
核心问题是你错误地将单个查找值包装成了列表,而非直接传入单个元素:
- 当输入
1时,find是["1"](包含字符串"1"的列表),而list是["1", "2"](元素为单个字符串的列表)。 - 此时
["1"] in ["1", "2"]的判断结果必然是False——因为list里的元素都是单个字符串,没有任何元素是列表["1"],所以函数不会执行return thislist,默认返回None。
修正步骤
- 直接用变量存储查找值,无需放到列表中:把
find = []和find.append(input(...))改成find = input("Input number to find: ")。 - (可选)如果需要匹配数字而非字符串,记得将输入转换为整数,避免类型不匹配的问题。
修正后的代码示例
字符串匹配版本
def function(findme, thislist): print("FindMe: {}".format(findme)) print("In This List: {}".format(thislist)) if findme in thislist: print("In!") return thislist while(True): find = input("Input number to find: ") print("Find: {}".format(find)) list = [] list.append(input("Input 1st number: ")) list.append(input("Input 2nd number: ")) print("List: {}".format(list)) result = function(find, list) print(result) if result is not None: print("returned list") print(list) else: print("nothing returned")
数字匹配版本
def function(findme, thislist): print("FindMe: {}".format(findme)) print("In This List: {}".format(thislist)) if findme in thislist: print("In!") return thislist while(True): find = int(input("Input number to find: ")) print("Find: {}".format(find)) list = [] list.append(int(input("Input 1st number: "))) list.append(int(input("Input 2nd number: "))) print("List: {}".format(list)) result = function(find, list) print(result) if result is not None: print("returned list") print(list) else: print("nothing returned")
内容的提问来源于stack exchange,提问作者mcha
相关产品推荐
相关产品推荐

