📅  最后修改于: 2023-12-03 15:35:50.788000             🧑  作者: Mango
这是一个程序,它可以找到一些国家的人口是任何邻国(在同一大陆)的三倍以上。
该程序需要传递一个参数,即大洲的缩写字母,如下所示:
python3 population.py CONTINENT_CODE
其中CONTINENT_CODE为大洲的缩写字母,可选值为:
例如,如果要寻找亚洲的人口是三倍以上邻国的国家,则可以运行下面的命令:
python3 population.py AS
程序将返回符合条件的国家和人口数据的markdown格式,如下所示:
| 国家 | 人口 |
| ---- | ---: |
| 中国 | 1394015977 |
| 印度 | 1366417756 |
| 印度尼西亚 | 270625568 |
| 日本 | 126264931 |
| 越南 | 96462106 |
| 菲律宾 | 108116615 |
| 朝鲜 | 25550000 |
| 韩国 | 51269185 |
该程序使用了一个开放的人口数据API,它可以返回每个国家的人口和所属大洲。程序先获取所有属于指定大洲的国家列表,然后依次查询每个国家的邻国,比较人口数量,如果符合条件,则将其记录下来。最后将符合条件的国家和人口数据按markdown格式输出。
该程序需要网络连接,因为它使用了一个开放的人口数据API。
import requests
import sys
# 所有大洲的缩写字母
CONTINENT_CODES = {
"AF": "Africa",
"AS": "Asia",
"EU": "Europe",
"NA": "North America",
"SA": "South America",
"OC": "Oceania",
}
# 找到一些国家的人口是任何邻国(在同一大陆)的三倍以上.
def find_countries(continent_code):
url = "https://restcountries.com/v3.1/region/" + continent_code
response = requests.get(url)
json_data = response.json()
countries = json_data
result = []
for country in countries:
populations = []
for neighbor in country["borders"]:
if neighbor in countries:
neighbor_population = countries[neighbor]["population"]
populations.append(neighbor_population)
max_population = max(populations) if populations else 0
if max_population * 3 < country["population"]:
result.append((country["name"]["common"], country["population"]))
return result
# 主函数,接收一个参数CONTINENT_CODE,返回指定大洲的符合条件的国家和人口
def main():
if len(sys.argv) != 2:
print("Usage: python3 population.py CONTINENT_CODE")
return
continent_code = sys.argv[1].upper()
continent_name = CONTINENT_CODES.get(continent_code)
if not continent_name:
print("Invalid continent code:", continent_code)
return
countries = find_countries(continent_code)
print("| 国家 | 人口 |")
print("| ---- | ---: |")
for country in countries:
print("| {} | {} |".format(country[0], country[1]))
if __name__ == "__main__":
main()
该代码返回的结果需要按markdown格式输出,如下所示:
| 国家 | 人口 |
| ---- | ---: |
| 中国 | 1394015977 |
| 印度 | 1366417756 |
| 印度尼西亚 | 270625568 |
| 日本 | 126264931 |
| 越南 | 96462106 |
| 菲律宾 | 108116615 |
| 朝鲜 | 25550000 |
| 韩国 | 51269185 |