Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import io
- from os import system as System
- from os import path as Path
- from math import ceil as Ceil
- # Структура города
- class Town:
- name = "" # Название города
- type = "" # Тип города [город, село, ...]
- latitude = "" # Широта
- longitude = "" # Долгота
- # Конструктор класса.
- # Входные данные: название, тип, широта и долгота
- #
- # self - первый параметр во всех функциях в классе.
- # аля указатель на текущий класс
- def __init__ (self, name, type, latitude, longitude):
- # Приравниваем входные данные к переменным в классе
- self.name = name
- self.type = type
- self.latitude = latitude
- self.longitude = longitude
- # Переопределяем функцию, которая возвращает строку - данные о городе
- def __str__ (self):
- return self.name + " " + self.type + " " + self.latitude + " " + self.longitude;
- # класс-контейнер - тут будут храниться наши города
- class Container:
- # массив
- listTowns = []
- # кол-во городов в массиве
- count = 0
- # кол-во городов на странице
- # Нужно для постраничного вывода списка
- townInPage = 5
- def addTown(self, newTown):
- # Сначала проверяем, есть ли в массве город с таким же названием
- for town in self.listTowns:
- if town.name == newTown.name:
- print ("Город с названием " + town.name + " уже есть в списке")
- return
- # добавляем город в массив
- self.listTowns.append(newTown)
- # увеличиваем кол-во городов в списке на 1
- self.count += 1
- # Функция для загрузки городов из файла
- def loadFromFile(self, path):
- if Path.exists(path) == False:
- print ("Файл не найден")
- return
- count = 0;
- # Читаем файл
- with io.open(path, encoding='utf-8') as file:
- # Для каждой строки в файле
- for line in file:
- # разделяем строку | таким вот знаком
- town = line.replace("\n", "").split("|")
- # Создаем класс нового города
- newTown = Town(town[0], town[1], town[2], town[3])
- self.addTown(newTown)
- count += 1
- print ("Добавлено " + str(count) + " городов")
- # Вывод городов
- # Короче, тут долго объяснять.
- def printPage(self, numPage):
- maxPage = Ceil(self.count / self.townInPage)
- print ("Выведена страница " + str(numPage) + " из " + str(maxPage - 1))
- for row in range(int(self.townInPage) * int(numPage), int(self.townInPage) * (int(numPage) + 1)):
- if row < self.count:
- print (str(row) + ": " + str(self.listTowns[row]))
- # Установить кол-во строк на одной странице
- def setTownsInPage(self, count):
- self.townInPage = int(count)
- #
- # Дальше пошла сама программа
- # Аля main()
- #
- # Отчищаем экран
- System('cls')
- towns = Container();
- # Бесконечный цикл
- while True:
- print ("1 - Загрузить данные из файла")
- print ("2 - Ввести данные вручную")
- print ("3 - Постраничный вывод записей")
- print ("4 - Установить кол-во записей на странице")
- answer = input()
- System('cls')
- if answer == "1":
- print ("Введите название файла")
- towns.loadFromFile(input())
- if answer == "2":
- print ("Введите название, тип, широту и долготу города")
- print ("Разделитель |")
- answer = input().split("|")
- # Если кол-во аргументов не равно 4ем
- if len(answer) != 4:
- print ("Введены некорректные данные")
- else:
- # Создаем экземляр класса нового города
- newTown = Town(answer[0], answer[1], answer[2], answer[3])
- towns.addTown(newTown)
- print ("Данные о городе добавлены")
- elif answer == "3":
- # Если нет данных ни об одном городе
- if towns.count == 0:
- print ("Нет данных ни об одном городе")
- else:
- # Вооот
- maxPage = Ceil(towns.count / towns.townInPage)
- print ("Введите номер страницы от 0 до " + str(maxPage - 1))
- towns.printPage(input())
- elif answer == "4":
- print ("Введите кол-во записей, которые будут отображаться на странице")
- towns.setTownsInPage(input())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement