У меня есть этот список под названием countries.txt, в котором перечислены все страны по их названию, площади (в км2), численности населения (например, ["Афганистан", 647500,0,25500100]).Двоичный поиск
def readCountries(filename):
result=[]
lines=open(filename)
for line in lines:
result.append(line.strip('\n').split(',\t'))
for sublist in result:
sublist[1]=float(sublist[1])
sublist[2]=int(sublist[2])
Это занимает в списке и распечатывается. Я хочу создать двоичный поиск и выполнить поиск по списку и распечатать информацию о стране, если она найдена. С помощью этого кода он должен сделать это
PrintCountry ("Канада") Канада, Площадь: 9976140,0, Население: 35295770
PrintCountry ("Winterfell") извини, не смог найти Winterfell в список стран.
Но он печатает Извините, не удалось найти Канаду в списке стран 4 раза, а затем печатает информацию Canadas.
Что происходит?
def printCountry(country):
myList=readCountries('countries.txt')
start = 0
end = len(myList)-1
while start<=end:
mid =(start + end)/2
if myList[mid][0] == country:
return '%s, Area: %.3f, Population: %i' %(country,myList[mid][1],myList[mid][2])
elif myList[mid][0] > country:
end = mid - 1
else:
start = mid + 1
print "I'm sorry, could not find %s in the country list" %(country)
Я думаю, что 'print' должен находиться вне цикла while. – Caramiriel