这是我的代码。当我尝试获取要返回的人口最少和人口最多的国家/地区时,它会从 csv 文件中为人口最多和人口最少的国家/地区打印第一个国家/地区。
import csv
import math
def main(file_name, region):
data = []
with open(file_name, 'r') as file:
reader = csv.DictReader(file) #Reads the CSV file and returns a list of dictionaries containing the data
for row in reader:
data.append(row)
countries = []
for row in data:
if row['Regions'] == region and float(row['Net Change']) > 0: #Returns a list of countries in a specific region with positive net change in population
countries.append(row['Name'])
#return countries
min_population = math.inf
max_population = -math.inf
min_country = None
max_country = None
if row['Name'] in countries: #Returns the country with minimum and maximum population in the given list of countries
population = int(row['Population(2020)'])
if population < min_population:
min_population = population
min_country = row['Name']
if population > max_population:
max_population = population
max_country = row['Name']
return min_country, max_country
我期待它提供两个不同的国家,即人口最多和最少的国家
我们可以考虑很多事情来让它发挥作用。你有一个好的解决方案的框架,我认为我们只需要稍微调整一下。
我要改变的两件事是:
import csv
import math
def main(file_name, region):
min_population = math.inf
max_population = -math.inf
min_country = None
max_country = None
with open(file_name, 'r') as file:
countries = [
row
for row
in csv.DictReader(file)
if row['Regions'] == region and float(row['Net Change']) > 0
]
for row in countries:
population = int(row['Population(2020)'])
if population < min_population:
min_population = population
min_country = row['Name']
if population > max_population:
max_population = population
max_country = row['Name']
return min_country, max_country