Книга «Изучаем Python»



Pdf көрінісі
бет191/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   187   188   189   190   191   192   193   194   ...   238
country_codes.py

from pygal.i18n import COUNTRIES

def get_country_code(country_name):



    """Возвращает для заданной страны ее код Pygal, состоящий из 2 букв."""

    for code, name in COUNTRIES.items():



        if name == country_name:

            return code

    # Если страна не найдена, вернуть None.

    return None



            

print(get_country_code('Andorra'))

print(get_country_code('United Arab Emirates'))

print(get_country_code('Afghanistan'))

Название страны передается функции 

get_country_code()

 и сохраняется в па-

раметре 


country_name

 . Затем программа перебирает пары «код—название» 

в 

COUNTRIES



 . Если название страны будет найдено, функция возвращает код 

страны , а если нет — после цикла добавляется строка, возвращающая 

None

 . 


Наконец, программа передает названия трех стран для проверки функции. Как 

и ожидалось, программа выводит три двухбуквенных кода:

ad

ae

af



Прежде чем переходить к использованию функции, удалите три команды 

print


 

из 


country_codes .py

.

Затем функция 



get_country_code()

 импортируется в 

world_population .py

:

world_population.py

import json

from country_codes import get_country_code

...

# Вывод населения каждой страны за 2010 год.



for pop_dict in pop_data:

if pop_dict['Year'] == '2010':

country_name = pop_dict['Country Name']

population = int(float(pop_dict['Value']))

        code = get_country_code(country_name)



        if code:

            print(code + ": "+ str(population))




Формат JSON    353

        else:



            print('ERROR - ' + country_name)

После извлечения названия и населения в 

code

 сохраняется код страны — или 



None

если код недоступен . Если код получен, то код и население страны выводятся ко-



мандой print . Если код недоступен, выводится сообщение об ошибке с названием 

страны, для которого не удалось найти код . Запустите программу, и вы увидите 

коды стран с населением и несколько сообщений об ошибках:

ERROR - Arab World

ERROR - Caribbean small states

ERROR - East Asia & Pacific (all income levels)

...

af: 34385000



al: 3205000

dz: 35468000

...

ERROR - Yemen, Rep.



zm: 12927000

zw: 12571000

Ошибки происходят по двум причинам. Во-первых, классификация в наборе дан-

ных не всегда осуществляется по странам; часть статистики относится к регионам 

или экономическим группам. Во-вторых, в части статистики используется другая 

запись полных названий стран (

Yemen,

 

Rep.



 вместо 

Yemen


). Пока опустим данные 

стран, вызывающие ошибки, и посмотрим, как будет выглядеть карта с успешно 

прочитанными данными.

Построение карты мира

С имеющимися кодами стран карта мира строится легко и просто. В Pygal под-

держивается тип диаграммы 

Worldmap

, упрощающий работу с географическими 

наборами данных. В качестве примера использования 

Worldmap


 мы создадим про-

стую карту с данными по Северной, Центральной и Южной Америке:



americas.py

import pygal

wm = pygal.Worldmap()



wm.title = 'North, Central, and South America'

wm.add('North America', ['ca', 'mx', 'us'])



wm.add('Central America', ['bz', 'cr', 'gt', 'hn', 'ni', 'pa', 'sv'])

wm.add('South America', ['ar', 'bo', 'br', 'cl', 'co', 'ec', 'gf',

    'gy', 'pe', 'py', 'sr', 'uy', 've'])

    


wm.render_to_file('americas.svg')

В точке  мы создаем экземпляр класса 

Worldmap


 и задаем атрибут 

title


 объекта 

карты. В точке  используется метод 

add()

, который получает метку и список 



кодов стран, на которых вы хотите сосредоточиться. Каждый вызов 

add()


 создает 

новый цвет для набора стран и добавляет этот цвет в список условных обозначений 




354    Глава 16  •  Загрузка данных

в левой части диаграммы с заданным текстом. Весь регион Северной Америки будет 

представлен одним цветом, поэтому мы включаем коды 

'ca'


'mx'


 и 

'us'


 в список, 

передаваемый первому вызову 

add()

, для единого представления на карте Канады, 



Мексики и Соединенных Штатов. Затем то же самое делается для стран Централь-

ной и Южной Америки.

Метод 

render_to_file()



 в точке  создает файл 

 .svg


 с диаграммой; вы можете от-

крыть этот файл в своем браузере. На полученной карте Северная, Центральная 

и Южная Америка выделены другими цветами (рис. 16.7).



Достарыңызбен бөлісу:
1   ...   187   188   189   190   191   192   193   194   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет