我正在为我的计算机课程完成一项任务,我在处理一个问题时遇到了一些麻烦。问题1和2有两种重叠,所以我将发布两者,以及我到目前为止的代码。
问题1:编写一个名为readCountries的函数,该函数读取文件并返回国家/地区列表。应该从这个文件中读取这些国家,其中包含一个不完整的国家列表及其面积和人口。此文件中的每一行代表以下格式的一个国家/地区:
名称,面积(以km2为单位),人口
打开文件时,您的函数应该处理可能发生的任何异常。您的函数应该完全读入文件,并将数据分成二维列表。您可能需要根据需要拆分和删除数据。数字应转换为正确的类型。您的函数应返回此列表,以便您可以在剩余的问题中使用它。
这是我对此部分的代码:
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, Area: 9976140.0, Population: 35295770
?
答案 0 :(得分:1)
嗯,一个明显的问题是这一行:
readCountries()
应该是这样的:
countryList = readCountries()
通过让readCountries
函数返回列表,你已经到了一半,但是你实际上从来没有为它返回的内容分配任何内容,所以它只是无处可去。