Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2018 19:10:53

VasiliyArmavir
Зарегистрирован: 2018-09-27
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Красивый вывод результата программы

День Добрый! Подскажите плиз, как можно выполнить красивый вывод на экран результата программы.
Спасибо

 import random
class Train:
    def __init__(self):
        return self.trains()
    def trains(self):
        self.trains = []
        train = dict.fromkeys(["number", "stations", "day", "price"], None)
        numbers = [1, 2, 3]
        days = [["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
                ["Вторник", "Суббота", "Понедельник"],
                ["Среда", "Четверг", "Пятница", "Воскресенье"]
                ]
        trips = [["Одесса", "Кишинев", "Харьков", "Киев", "Москва"],
                 ["Днепропетровск", "Кривой рог", "Киев", "Харьков", "Одесса"],
                 ["Харьков", "Киев", "Симферополь", "Москва"]
                 ]
        prices = [[0, 50, 150, 200, 1000],
                  [0, 50, 100, 150, 200],
                  [0, 150, 200, 800]
                  ]
        for x in range(len(numbers)):
            train = train.copy()
            train["number"] = numbers[x]
            train["stations"] = trips[x]
            train["price"] = prices[x]
            train["day"] = days[x]
            self.trains.append(train)
class Passenger:
    def order(self, day, dest, from_st):
        zapros = dict.fromkeys(["day", "dest"], None)
        zapros["day"] = day
        zapros["dest"] = dest
        zapros["from_st"] = from_st
        return zapros
    def train(self, match):
        return random.choice(match)
class Kassa:
    def zapros(self, zapros, train):
        match = []
        for train in train.trains:
            if zapros["dest"] in train["stations"] and zapros["day"] in train["day"]:
                match.append(train)
        return match
    def price(self, zapros, vibor):
        new_price = dict.fromkeys(["amount"], 0)
        new_price["amount"] = vibor["price"][vibor["stations"].index(zapros["dest"])] \
                              - vibor["price"][vibor["stations"].index(zapros["from_st"])]
        return new_price
kassir = Kassa()
passenger = Passenger()
train = Train()
while True:
    user = input('1 Сделать запрос. 2 Выйти из системы: ')
    if user == "1":
        day = input("Введите день (Понедельник-Воскресенье): ")
        dest = input("Пункт назначения: ")
        from_st = input("Пункт отправки: ")
        zapros = {'day': day,
                  'dest': dest,
                  'from_st': from_st,
                  }
        zapros = passenger.order(day, dest, from_st)
        if not zapros:
            print("Свободных билетов на поезда нет")
        else:
            match = kassir.zapros(zapros, train)
            vibor = passenger.train(match)
            new_price = kassir.price(zapros, vibor)
            print("\t\t\t Ваш поезд и маршрут :\n" + str(vibor))
            print("\t\t\t Цена билета {}".format(new_price["amount"]))
            break
    elif user == "2":
        print("Good Bye!!!")
        break

Сейчас вывод выглядит как-то так:

1 Сделать запрос. 2 Выйти из системы: 1
Введите день (Понедельник-Воскресенье): Понедельник
Пункт назначения: Москва
Пункт отправки: Харьков
Ваш поезд и маршрут :
{'number': 1, ‘stations’: , ‘day’: , ‘price’: }
Цена билета 850

Офлайн

#2 Окт. 30, 2018 12:56:29

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Красивый вывод результата программы

VasiliyArmavir
как можно выполнить красивый вывод на экран результата программы.
красивый понятие субьективное, но есть пару правил.
каждый пункт должен быть на отдельной строке , по возможности давать возможность ввести номер пункта вместо его названия…
VasiliyArmavir
Сейчас вывод выглядит как-то так:
сделайте чтоб выглядело както так:
Что вы хотите:
1. Сделать запрос
2. Выйти из системы
Введите номер пункта: 1

Выберите день:
1. Понедельник
2. Вторник
3. Среда
4. Четверг
5. Пятница
б. Суббота
7. Воскресенье
Введите номер пункта: 1

Пункт назначения: Москва

Пункт отправки: Харьков

Ваш поезд:
Номер: 1
Маршрут: Одесса-Москва
Остановки: Одесса -> Кишинев -> Харьков -> Киев -> Москва
Цена билета, (руб.): 850



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 30, 2018 12:58:28)

Офлайн

#3 Окт. 30, 2018 13:16:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Красивый вывод результата программы

 print("\t\t\t Ваш поезд и маршрут :\n" + str(vibor))
например из vibor формировать такую строку, которая Вам будет казаться красивой и ее уже выводить. А так у вас судя по выводу словарь



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Окт. 30, 2018 14:47:05

VasiliyArmavir
Зарегистрирован: 2018-09-27
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Красивый вывод результата программы

Спасибо, буду пробовать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version