列表、字典操作——人口排名靠前的国家

简介

验证一下python学习效果,顺便还能再编程与巩固的同时长点见识,

项目描述

1、网上采集世界国家人口排名先构成列表,再形成字典

2、用户输入排名,输出对应排名的国家

3、用户输入国家,输出该国家人口数量对应的排名

4、若是不输入内容或是输入的内容不在程序的查找范围内,可以重新输入

参考

2019年世界国家(地区)人口排名

程序中的TXT文件,或复制该链接下的表格名称那一列新建TXT即可

python 怎么要求用户输入 Q 或者q来退出

文档:python 要求用户输入 Q 或者q来退出.md

列表生成式

python中如何使输出不换行

Python3 zip() 函数

python基础之字符串为空或空格判断

《流畅的Python》字典构造方法

小结

1、else、elif为子块,不能独立使用;一个if语句中可以包含多个elif语句,但结尾只能有一个else语句

2、 and 和 or 执行布尔逻辑演算,在布尔环境中,0、”、[]、()、{}、None为假;其它任何东西都为真

3、字典构造方法

a = dict(one=1, two=2, three=3)
b = {'one': 1, 'two': 2, 'three': 3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three': 3, 'one': 1, 'two': 2})

4、列表构造方法

n1 = []
for n in range(1, 227):
    n1.append(str(n))

程序代码

# !/usr/bin/python
# -*- coding: UTF-8 -*-

def population_rank():
    country_name = []
    with open('C:\\Users\\th103\\Desktop\\country_name.txt', 'r', True, 'UTF-8') as f:
        for i in range(0, 227):
            name = f.readline()
            country_name.append(name.strip('\n'))

    list1 = [i for i in range(1, 227)]
    list2 = country_name
    population_rankings_list = list(zip(list1, list2))

    # 世界人口数量排名前10位国家列表转化为字典
    population_rankings_dict = dict(sorted(population_rankings_list))

    # 生成国家排名的列表
    n1 = []
    for n in range(1, 227):
        n1.append(str(n))

    # 进入循环,按q或Q退出程序
    while True:

        input_value = input('请输入一个正整数或国家名,或按q或Q退出程序:')

        # 判断输入的数字(此时为字符串形式)是否在n1
        if input_value in n1:
            country_name = population_rankings_dict[int(input_value)]
            print('人口排名第{0}的国家是:{1}'.format(int(input_value), country_name))

        # 判断输入的内容是否不在n1和字典的“值”中,确保程序继续下去
        elif (input_value not in n1) and (input_value not in population_rankings_dict.values()):
            print(end='')
        
        # 不打断程序的连续性
        else:
            print(end='')

        # 判断输入的国家名(此时为字符串形式)是否在字典的“值”中
        for i in range(1, 227):
            if (input_value == population_rankings_dict[i]) and (len(input_value) > 0):
                print('人口排名第{rank}的国家是:{name}'.format(rank=i, name=str(input_value)))

        # 输入字母q或Q退出循环
        while input_value.lower() == 'q' or input_value == 'Q':
            exit(0)


population_rank()

致谢

感谢同伴对我的帮助!

感谢网上的教程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值