You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python计算特定地区国家平均人口函数无输出问题求助

Python计算特定地区国家平均人口函数无输出问题求助

嘿,我看了你的代码和问题描述,发现几个关键问题导致你拿不到平均人口的输出,咱们一步步拆解并修正:

核心问题1:函数提前终止,后续代码无法执行

你的代码在第一个for循环处理完最小/最大人口国家后,直接执行了return min_country, max_country——return语句会立即终止函数,这就导致后面计算平均人口的代码完全没有机会运行,自然不会输出平均人口结果。

核心问题2:平均人口计算的判断逻辑错误

在计算平均人口的循环里,你写了if row['Name'] == region,但region是地区名称,而row['Name']是国家名称,这两个永远不会相等,所以total_pop和num_countries一直是0,就算前面的return问题解决了,这里也得不到正确的平均值。

额外可选优化:筛选条件的必要性

你在筛选countries时加了float(row['Net Change']) > 0的条件,如果你不是只想统计净人口增长为正的国家,这个条件会过滤掉一部分国家,可能不符合你“计算该地区所有国家平均人口”的需求,可以考虑移除或者注释说明。


修正后的代码

我把这些问题都修复了,同时调整了逻辑,让函数可以同时返回最小人口国家、最大人口国家和平均人口(你也可以按需调整返回内容):

import csv
import math

def main(file_name, region):
    min_population = math.inf
    max_population = -math.inf
    min_country = None
    max_country = None
    total_pop = 0
    num_countries = 0

    with open(file_name, 'r') as file:
        # 这里可选是否保留Net Change>0的筛选,根据你的实际需求调整
        countries = [row for row in csv.DictReader(file) if row['Regions'] == region]
        # 如果需要只统计净增长为正的国家,用下面这行替换上面的:
        # 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']
            # 累加总人口和国家数量
            total_pop += population
            num_countries += 1

    # 计算平均人口
    if num_countries > 0:
        average_pop = total_pop / num_countries
        return min_country, max_country, average_pop
    else:
        # 如果该地区没有符合条件的国家,返回None或你需要的默认值
        return None, None, None

使用示例

调用函数时可以这样获取结果:

min_c, max_c, avg_p = main('countries_data.csv', 'Asia')
print(f"该地区最小人口国家:{min_c},最大人口国家:{max_c},平均人口:{avg_p:.2f}")

这样就能正常得到你需要的平均人口结果啦!

备注:内容来源于stack exchange,提问作者Rambes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:14:28