gpt4 book ai didi

python - 在列表中执行二分搜索 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:51 24 4
gpt4 key购买 nike

我正在做计算机课的作业,但我在一个问题上遇到了一些麻烦。问题 1 和问题 2 有点重叠,所以我将发布这两个问题以及我到目前为止的代码。

问题 1:编写一个名为 readCountries 的函数,该函数读取文件并返回国家/地区列表。应从此文件中读取国家/地区,该文件包含国家/地区及其面积和人口的不完整列表。该文件中的每一行代表一个国家/地区,格式如下:

名称、面积(平方公里)、人口

打开文件时,您的函数应该处理可能发生的任何异常。您的函数应该完全读入文件,并将数据分成二维列表。您可能需要根据需要拆分和剥离数据。数字应转换为正确的类型。您的函数应返回此列表,以便您可以在其余问题中使用它。

这是我这部分的代码:

    def readCountries():
countryList = []
for line in open('Countries.py', 'r'):
with open('Countries.py', 'r') as countriesFile:
countries = countriesFile.read()
countryList.append(line.strip().split())
return countryList

问题 2:编写一个名为 getCountry 的函数,该函数采用表示国家/地区名称的字符串作为参数。首先调用问题 1 中的答案来获取国家/地区列表,然后对列表进行二分搜索并打印找到的国家/地区信息。

这是我这部分的代码:

    countryList = readCountries()

def getCountry(countryList, name):
lo, hi = 0, len(countryList) - 1
while lo <= hi:
mid = lo + (hi - lo) // 2
country = countryList[mid]
test_name = country[0]
if name > test_name:
lo = mid + 1
elif name < test_name:
hi = mid - 1
else:
return country
return countries[lo] if countries[lo][0] == name else None

输出是这样的:['Canada', '9976140.0', '35295770'] 这部分是我所需要的,但我如何让它看起来像这样:Canada ,面积:9976140.0,人口:35295770

最佳答案

嗯,一个明显的问题是这一行:

readCountries() 

应该是这样的:

countryList = readCountries() 

通过让 readCountries 函数返回列表,您已经完成了一半,但您实际上从未将任何内容分配给它返回的内容,因此它只是无处可去。

关于python - 在列表中执行二分搜索 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com