我需要编写一个代码,对句子中的字符进行线性搜索。我必须在不使用任何内置函数的情况下做到这一点。
程序应输出字符在索引中的位置。
如果字符不在句子中,则应输出-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")
答案 0 :(得分:0)
您可能想要这样:
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
。
答案 1 :(得分:0)
您陷入无限循环,因为只有在找到解决方案后才更新def linear_search(intList, target):
found = False
count = 0
while count < len(intList):
if intList[count] == target:
found = True
break
count = count + 1
变量。
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
我还建议使用for循环而不是while循环来防止此错误:
function toggleWindow() {
$('.fullScreenWindow').toggleClass('show');
}
我还注意到了其他一些错误,但是由于它们不是您的问题的一部分,因此我将让您首先尝试自己解决这些问题。