Вложенный код l oop без ошибок, не выполняется - PullRequest
0 голосов
/ 20 января 2020

У меня есть этот код, и он вообще не запускается. Это список объектов, и у каждого объекта есть двумерный список. Код не выполняется даже для отображения только элемента flightNo. Я сделал метод для отображения 2d списка в объекте, но ничего не происходит. Я проверил с простой печатью ('Hello') в конце, и это работает. Может кто-нибудь сказать мне, что здесь может быть не так?

РЕДАКТИРОВАТЬ: Полный код по адресу: https://onlinegdb.com/HJPqXWXWU

elif a == 3:

for i in range(len(FlightList)):
    print(FlightList[i].flightNo)
req = input('Enter flight number to buy tickets: ')
for Flight in FlightList:
    if Flight.flightNo == req:
        for a in range(len(Flight.seats)):
            for b in range(len(Flight.seats[a])):
                print(Flight.seats[a][b], end=" ")
            print()
        qty = int(input('Enter number of tickets'))
        Flight.buyTicket(one, qty)
print("Hello")

Я также пробовал другой метод для отображения flightNo , снова не выполняется:

for Flight in FlightList:
    print(Flight.flightNo)
re4 = input('Enter flight number to view seats: ')
for i in FlightList:
    if i.flightNo == re4:
        for a in range(len(i.seats)):
            for b in range(len(i.seats[a])):
                print(i.seats[a][b], end=" ")
            print()

1 Ответ

0 голосов
/ 20 января 2020

Вот рабочий код, в котором я изменил расположение вызова метода и присвоения переменной, потому что каждый раз, когда нам нужно создать новый экземпляр класса для правильного сохранения данных, мы не должны очищать список, поэтому я изменил положение за пределами l oop. И это у меня работает нормально. для моего базового c тестирования. Я могу улучшить, если вам нужно. и сохранил свой код в комментарии, чтобы вы могли видеть изменения.

    import sys
    class Flight:
        def __init__(self):
            self.flightNo = "None"
            self.planeType = "None"
            self.destination = "None"
            self.w = self.h = 0
            self.seats = [["None" for x in range(self.w)] for y in range(self.h)]
            self.depDate = "None"
            self.depTime = "None"
            self.eta = "None"
            self.ticketsSold = 0
            self.pricePerTicket = 0.0

        def displayDetails(self):
            print('Flight No: ', self.flightNo,
                  '\nPlane Type: ', self.planeType,
                  '\nDestination: ', self.destination,
                  '\nDeparture Date: ', self.depDate,
                  '\nDeparture Time: ', self.depTime,
                  '\nETA: ', self.eta,
                  '\nTickets Sold: ', self.ticketsSold,
                  '\nPrice: ', self.pricePerTicket, '\n\n')

        def totalSales(self):
            return print("Total number of tickets sold: ", self.ticketsSold,
                         "\nTotal sales: ", (self.ticketsSold * self.pricePerTicket))

        def buyTicket(self, quantity):
            quantity = int(input("Enter number of tickets required: "))
            cost = quantity * self.pricePerTicket
            for v in range(len(self.seats)):
                for j in range(len(self.seats[v])):
                    if quantity > len(self.seats) * len(self.seats[v]):
                        print("Lessen the number of tickets")
                        break
                    if self.seats[v][j] == "\\__/":
                        self.seats[v][j] = "\\AA/"
                        quantity -= 1
                        if quantity == 0:
                            break
                if quantity == 0:
                    break
            print(quantity, "tickets bought for $", cost,
                  "\nSeats assigned", )
            self.ticketsSold += quantity


    # one = Flight()
    ans = True
    FlightList = []
    while ans:
        print("----------------------------- \n1. Add a flight \n2. Remove a flight \n3. Sell Tickets",
              "\n4. Display seat info \n5. Display total sales for flight \n6. Display flight info",
              "\n7. Display all flight's info \n0. Quit")

        a = int(input("Enter number: "))
        #FlightList = []
        if a == 1:
            one = Flight()
            one.flightNo = input('Enter flight number: ')
            one.planeType = input('Enter plane type: ')
            one.destination = input('Enter destination: ')
            one.w = int(input('Enter number of columns in flight: '))
            one.h = int(input('Enter number of rows in flight: '))
            one.seats = [["\\__/" for x in range(one.w)]
                         for y in range(one.h)]
            one.depDate = input('Enter departure date: ')
            one.depTime = input('Enter departure time: ')
            one.eta = input('Enter ETA: ')
            one.ticketsSold = int(input('Enter number of tickets sold: '))
            one.pricePerTicket = float(input('Price: '))

            FlightList.append(one)

        elif a == 2:
            rem = input('Enter flight number to remove: ')
            for i in FlightList:
                if i.flightNo == rem:
                    del FlightList[FlightList.index(i)]

        elif a == 3:
            for i in range(len(FlightList)):
                print(FlightList[i].flightNo)
            req = input('Enter flight number to buy tickets: ')
            for Flight in FlightList:
                if Flight.flightNo == req:
                    for a in range(len(Flight.seats)):
                        for b in range(len(Flight.seats[a])):
                            print(Flight.seats[a][b], end=" ")
                        print()
                    qty = int(input('Enter number of tickets'))
                    Flight.buyTicket(one, qty)
            print("Hello")

        elif a == 4:
            for Flight in FlightList:
                print(Flight.flightNo)
            re4 = input('Enter flight number to view seats: ')
            for i in FlightList:
                if i.flightNo == re4:
                    for a in range(len(i.seats)):
                        for b in range(len(i.seats[a])):
                            print(i.seats[a][b], end=" ")
                        print()

        elif a == 5:
            re4 = input('Enter flight number to view seats: ')
            for i in FlightList:
                if i.flightNo == re4:
                    i.totalSales()

        elif a == 6:
            re4 = input('Enter flight number to view seats: ')
            for i in FlightList:
                if i.flightNo == re4:
                    i.displayDetails()

        elif a == 7:
            for item in FlightList:
                item.displayDetails()

        elif a == 0:
            sys.exit(0)
...