Проект "Довідник країн" (EasyGUI)

Інформацію про країни подано у файлі з такою структурою: назва, столиця, грошова одиниця, площа, населення, файл із прапором.

Україна , Київ , Гривня , 603.7 , 49.1 , Ukraine.gif
США , Вашингтон , Долар , 9363.2 , 237.8 , United States.gif
Франція , Париж , Євро , 551.6 , 53.1 , France.gif
Росія , Москва , Рубль , 17075.4 , 163.7 , Russia.gif
Англія , Лондон , Фунт , 244.1 , 55.9 , United Kingdom.gif
Китай , Пекін , Юань , 9597 , 1488.5 , China.gif

Створити проект, у якому користувач може обрати країну з переліку та переглянути її характеристику на вибір:


Для початку потрібно зчитати дані з файлу в програму. Очевидно, що слід зберігати інформацію про кожну країну в єдиній структурній одиниці, і таких об'єктів буде кілька (з однаковою структурою).

Наприклад, всі дані про країну будуть збережені у вигляді списку: ['Україна', 'Київ', 'Гривня', '603.7', '49.1', 'Ukraine.gif']. Кілька таких списків утворюють список countries. По суті - це список списків, двовимірний список, або таблиця, у рядках якої міститься інформація про відповідні країни. 

file=open('countries.txt') #відкривання файлу

countries=[] #створення списку

for line in file: #для кожного рядка файлу

    countries.append(line.split(' , ')) #line.split(' , ') створює список з даними про країну, і додаємо цей список до загальної бази

Робота програми організована таким чином, що користувач має змогу обрати країну. Далі може обрати характеристику,  повернутись до вибору країни або завершити роботу. 


Для зручнішого написання коду проекту, створимо три функції для вибору країни country, вибору характеристики info та перегляду даних view. При цьому з функції country має викликатись функція info, в яку передається номер вибраної країни. Функція info передає у функцію перегляду view дані про обрану країну та характристику; викликає функцію вибору країни або виконує вихід з програми.


Щоб вибрати країну, потрібно сформувати список країн, дані про які є у проекті. Назва країни - це перший елемент в описі кожної країни. Цей перелік виведемо у вікні зі списком. Обрана країна має певний номер - метод index визначає номер цієї країни у загальному списку. На основі цієї інформації (nomer) можна викликати функцію вибору характеристики.

def country(countries):

    choices=[] #список країн для формування меню

    for elements in countries: #для елемента загального списку

        choices.append(elements[0]) #додаємо назву - перший елемент даних кожної країни

    vybir=easygui.choicebox(choices=choices) #вікно з вибором країн

    nomer=choices.index(vybir) #номер вибраної країни

    info(nomer) #перехід до функції вибору характеристик


Вибрати характеристику можна з поміж варіантів: столиця, населення,площа,валюта,вихід, інша країна. Зображення pic - це шостий елемент даних про країну, воно виводиться у цьому ж вікні кнопкового меню. Якщо вибрано показ іншої країни, викликається функція вибору країни; якщо вибрано вихід - відбувається вихід з програми; якщо вибрано певну характеристику, то викликається функція показу цієї характеристики (vybir) для попередньо обраної країни (nomer).

def info(nomer):

    pic=countries[nomer][5].strip() #шостий елемент даних - назва зображення

    vybir=easygui.buttonbox(choices=['столиця','населення','площа','валюта','вихід', 'інша країна'], image=pic)

    if vybir=='інша країна': 

        country(countries) #перехід до функції вибору країни

    elif vybir=='вихід': 

        return #вихід з проекту

    else:

        view(vybir, nomer) #перехід до функції показу характеристики


Функція показу інформації про країну виводить дані з певного елемента за номерами: столиця - другий елемент, валюта - третій, площа - четвертий, населення - п'ятий. Метод strip() видаляє зайві символи з рядка (це можуть бути пробіли чи переходи на новий рядок). Після показу цієї інформації відбувається виклик функції вибору характеристик.

def view(vybir, nomer):

    if vybir=='столиця':

        text=countries[nomer][1].strip()

    elif vybir=='населення':

        text=countries[nomer][4].strip()

    elif vybir=='площа':

        text=countries[nomer][3].strip()

    elif vybir=='валюта':

        text=countries[nomer][2].strip()

    easygui.msgbox(text)

    info(nomer) #перехід до функції вибору характеристик


Таким чином, основна програма зводиться до одного виклику функції вибору країни country(countries)

Остання зміна: середа 23 березня 2016 9:19