我需要编写一个代码,对字符串中的字符进行线性搜索。我必须在不使用任何内置函数的情况下完成它。
程序应该输出找到的字符的索引。
如果字符不在句子中,则应输出-1。
我已经尝试编写代码,但它输入句子和字符,但后来不起作用。
def linear_search(intList,target):
found = False
count = 0
while count < len(intList):
if intList[count] == target:
count = count + 1
found = True
break
return found
sentence = input('Enter a sentence: ')
character = input('Enter a character: ')
character_found = linear_search(sentence,character)
if character_found:
print("The character is", count, "on the index")
else:
print("The character is -1")
你可能想要这个:
def linear_search(intList, target):
count = 0
while count < len(intList):
if intList[count] == target:
return count
else:
count += 1
return -1
代码问题:
target
,那么你已经找到它了!你可以返回count
。如果没有,那么你想增加count
。目前,您的代码正好相反。found
,这意味着它只返回True
或False
。实际上不需要found
变量,因为你可以通过返回来突破函数,但无论如何你应该返回count
。count
。这是行不通的,因为count
是一个局部变量:每次运行函数时都会创建一个新的count
实例,并在函数返回后销毁。顺便说一句,这是你应该返回count
,而不是found
的另一个原因:你可以检查count == -1
。您陷入无限循环,因为您只在找到解决方案后更新count
变量。
正确实现while循环:
def linear_search(intList, target):
found = False
count = 0
while count < len(intList):
if intList[count] == target:
found = True
break
count = count + 1
我还建议使用for循环而不是while循环来防止这个错误:
def linear_search(intList, target):
found = False
count = 0
for i in range(len(intList)):
if intList[i] == target:
found = True
count = i
break
return found
我也注意到其他一些错误,但由于它们不是你问题的一部分,我会让你先尝试自己解决。