我有這個名爲countries.txt的列表,按其名稱,面積(以km2),人口(例如[「Afghanistan」,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( 「冬」) 對不起,找不到冬在國家名單。
但它打印對不起,在國家名單中找不到加拿大4次然後打印加拿大信息。
這是怎麼回事?
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