我正在尝试为类编写二进制搜索程序,我很确定我的逻辑是正确的,但我一直收到非UTF-8错误。我从未见过这个错误,任何帮助/澄清都会很棒!非常感谢。
这是代码。
def main():
str names = [‘Ava Fischer’, ‘Bob White’, ‘Chris Rich’, ‘Danielle Porter’, ‘Gordon Pike’, ‘Hannah Beauregard’, ‘Matt Hoyle’, ‘Ross Harrison’, ‘Sasha Ricci’, ‘Xavier Adams’]
binarySearch(names, input(str("Please Enter a Name.")))
print("That name is at position "+position)
def binarySearch(array, searchedValue):
begin = 0
end = len(array) - 1
position = -1
found = False
while !=found & begin<=end:
middle=(begin+end)/2
if array[middle]== searchedValue:
found=True
position = middle
elif array[middle] >value:
end=middle-1
else:
first =middle+1
return position
答案 0 :(得分:15)
在代码顶部添加此行。它可能有用。
# coding=utf8
答案 1 :(得分:10)
您的编辑器用U+2018 LEFT SINGLE QUOTATION MARK个字符替换了'
(ASCII 39),通常是您使用Word或类似的字处理器而不是纯文本编辑器的符号;文字处理器试图让你的文字更漂亮&#39;并自动替换简单的引号和花哨的引号。然后将其保存在Windows 1252 codepage encoding中,其中花哨的引号保存为十六进制91个字符。
Python没有。它希望源代码保存为UTF-8并使用'
或"
作为引号。使用记事本,或者更好的是IDLE来编辑Python代码。
您的代码中还有许多其他错误;例如,您不能在变量名中使用空格,Python使用and
,而不是&
作为布尔AND运算符。 !=
是一个需要2个操作数的运算符(它意味着&#39;不等于&#39;,与==
相反),布尔NOT运算符称为not
。
答案 2 :(得分:0)
以开头的常量字符串字符不是正确的字符串定界符。您正在使用
‘Ava Fischer’ # ‘ and ’ as string delimiters
应该在什么时候
'Ava Fischer' # Ascii 39 as string delimiter
或者也许
"Ava Fischer" # Ascii 34 as string delimiter
答案 3 :(得分:0)
如果您使用的是Notepad ++,请单击顶部的Encoding
,然后选择Encode in UTF-8
。