【发布时间】:2021-08-03 16:46:31
【问题描述】:
我是 Python 的初学者,所以如果我的问题非常基本或明显,我提前道歉。我正在尝试编写一个名为find(my_list, value) 的函数,它接受一个列表和一个值作为参数。该函数在列表中搜索值并返回在列表中第一次出现该值的索引。如果在列表中找不到该值,我希望该函数返回 -1。
问题是我无法使用任何内置函数,range() 和 str() 除外。我也不能使用quit() 或exit() 或break 或return 语句退出循环。
我正在尝试使用“for”循环方法以及布尔语句(控制何时停止循环)。我认为我在正确的轨道上,但相信我的实施存在问题。当列表中的值 not 时,我得到了所需的输出 (-1)。但是,当值在列表中时,我似乎无法获得所需的输出。任何指导将不胜感激。
def find(my_list, value):
index = 0
valid = False
if value != my_list:
found = -1
for element in my_list:
if element == value:
valid = True
found = index
else:
index += 1
return found
名单:
str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g']
函数调用:
print(list_function.find(str_list1, 'g'))
print(list_function.find(str_list1, 'z'))
预期输出:
3
-1
【问题讨论】:
-
最好抛出异常;如果您忘记检查返回值,这可以防止您以后天真地尝试使用
-1作为列表索引。 -
请添加您进行的函数调用,预期和实际返回值
-
@jtlz2 不要修复 Python 代码的缩进;你这样做解决了实际问题。
-
问题:在 cmets 的一个问题下,有人指出你没有说是否可以使用
lenbuiltin。在我的回答中,我自动假设您可以,因为如果您没有列表长度,range对列表没有多大意义。那么您可以或不可以在您的解决方案中使用len吗? -
@h4z3
len只有在与range一起使用时才可以使用。如果我的措辞明智的话:) 例如,range(len(my_list))