【发布时间】:2017-01-08 05:29:29
【问题描述】:
两个版本,返回相反的答案,但总是一个错误。我不确定我哪里出错了。我尝试了一系列其他选项,但这似乎是最接近的。 编辑:需要循环
目标:识别列表中的元素,识别何时不在列表中,识别列表何时为[],相应地返回字符串。
def search_for_string(a_list, search_term):
i=0
for search_term in a_list:
i += 1
if a_list[i] == search_term:
return 'string found!'
elif a_list[i] != search_term:
return 'string not found2'
if len(a_list) == 0:
return 'string not found'
apple = search_for_string(['a', 'b', 'c'], 'd')
print(apple)
def search_for_string(a_list, search_term):
i=0
for search_term in a_list:
if a_list[i] == search_term:
return 'string found!'
elif a_list[i] != search_term:
return 'string not found2'
i += 1
if len(a_list) == 0:
return 'string not found'
apple = search_for_string(['a', 'b', 'c'], 'd')
print(apple)
其他测试:
apple = search_for_string(['a', 'b', 'c'], 'b')
apple = search_for_string([], 'b')
【问题讨论】:
-
首先,您将覆盖变量 search_term 的值。例如,您将其作为“d”传递,但由于您的 for 循环使用相同的变量名,它将被覆盖。要查看发生了什么,请尝试在 for 循环中打印 search_term 的值。 (即在 for 循环的第一行下方添加
print(search_term)作为一行。)这可以帮助您调试。 -
我明白你的意思,但我不知道该怎么办哈哈我会继续胡闹
-
您可能需要查找
enumerate().它会为您保存i对象。 -
谢谢!是的,我已经检查过了(重新开始并为这个问题找到解决方案哈哈)。看起来确实很有帮助。
-
您能否回顾一下您的所有帖子,并在适当的地方选择答案,并为您选择的答案以及您认为值得的任何其他答案投票,尽管不是您最终选择的答案。我的意思不是听起来粗鲁,所以如果遇到这种情况,我深表歉意,但这是 Stack Exhange 及其网络如何运作的一个非常重要的部分(免责声明 - 我给出了一个选定的答案,但没有得到我预期的支持其中,所以我可能有点偏见和脾气暴躁...... ;) )。 Stephan Rauch 在下面给出了一个很好的答案。