[英]I have been trying to qcut an array of values into 4 bins. I am getting the error below? How to solve this I am a beginner in Python
[英]I am new to Python and have been working on Plural sight to learn python. For below code when I try to use "def make_flight() I am getting error
對於以下代碼,當我嘗試使用def make_flight()
時出現錯誤
Traceback (most recent call last):
File "C:\python_work\Airtravel.py", line 169, in <module>
c,d = make_flights()
NameError: name 'make_flights' is not defined
[Finished in 125ms]
這是代碼:
from pprint import pprint as pp
#Model for aircraft flights.
class Flight:
def __init__(self, number, aircraft):
#flight number should be like"SN060"
if not number[:2].isalpha():
raise ValueError(f"No airline code in '{number}'")
if not number[:2].isupper():
raise ValueError(f"Invalid Airline code '{number}'")
if not (number[2:].isdigit() and int(number[2:]) <= 9999):
raise ValueError(f"Invalid route number'{number}'")
self._number = number
self._aircraft = aircraft
rows, seats = self._aircraft.seating_plan()
self._seating=[None] + [{letter : None for letter in seats} for _ in rows]
def number(self):
return self._number
def aircraft_model(self):
return self._aircraft.model()
def allocate_seat(self, seat, passenger):
# Allocate seat to passengers
# seat : '12C' or '20A'
#passenger : name of passenger
row, letter = self._parse_seat(seat)
if self._seating[row][letter] is not None:
raise ValueError(f"seat{seat} already Occupied")
self._seating[row][letter] = passenger
def _parse_seat(self, seat):
row, seat_letters = self._aircraft.seating_plan()
letter = seat [-1]
if letter not in seat_letters:
raise ValueError(f"Invalid seat letter {letter}")
row_text= seat[:-1]
try:
row=int(row_text)
except ValueError:
raise ValueError(f"invalid seat row {row_text}")
if row not in rows:
raise ValueError(f"Invalid row number{row}")
return row, letter
def relocate_passenger(self, from_seat, to_seat):
#Reloacte passenger to new seat.
from_row, from_letter = self._parse_seat(from_seat)
if self._seating[from_row][from_letter] is None:
raise ValueError(f'No passenger to relocate in seat {from_seat}')
to_row, to_letter = self._parse_seat(to_seat)
if self._seating[to_row][to_letter] is None:
raise ValueError(f'seat{to_seat} already Occupied')
self._seating[to_row][to_letter] = self._seating[from_row][from_letter]
self._seating[from_row][from_letter] = None
def num_available_seats(self):
return sum(
sum(1 for s in row.values() if s in None)
for row in self._seating
if row is not None
)
def make_boarding_cards(self, card_printer):
for passenger, seat in sorted(self._passenger_seat()):
card_printer(passenger, seat, self.number(), self.aircraft_model())
def _passenger_seats(self):
# Passenger seating allocation
row_numbers, seat_letters = self._aircraft.seating_plan()
for row in row_numbers:
for letter in seat_letters:
passenger = self._seating[row][letter]
if passenger is not None:
yield (passenger, f"{row}{letter}")
def make_flights(self):
f = Flight("BA758", AirbusA319("G-EUPT"))
f.allocate_seat('12A', 'Blake McNeal')
f.allocate_seat('15F', 'Tiffany Croom')
f.allocate_seat('15E', 'Mike Jude')
f.allocate_seat('1C', 'Micky Mouse')
f.allocate_seat('1D', 'Joe May')
g = Flight("AF72", Boeing777("F-GSPS"))
g.allocate_seat('55K', 'Larry Wall')
g.allocate_seat('33G', 'Yukihiro Matsumoto')
g.allocate_seat('4B', 'Brian Kernighan')
g.allocate_seat('4A', 'Dennis Ritchie')
return f, g
def card_printer(passenger, flight_number, aircraft):
output = (
f"| Name: {passenger}" \
f" Flight: {flight_number}"\
f" Seat: {seat}" \
f" Aircraft: {aircraft}" \
f"|"
)
banner = "+" + "-" * (len(output) - 2) + '+'
border = '|' + ' ' * (len(output) - 2) + '|'
lines = [banner, border, output, border, banner]
card = "\n".join(lines)
print(card)
print()
class Aircraft:
def __init__(self, registration):
#Simulate Aircraft attributes.
self._registration = registration
def registration(self):
return self._registration
def num_seats(self):
rows, row_seats = self.seating_plan()
return len(rows) * len(row_seats)
class AirbusA319(Aircraft):
def model(self):
return "Airbus A319"
def seating_plan(self):
return range(1,23), "ABCDEFGHJK"
class Boeing777(Aircraft):
def model(self):
return "Boeing 777"
def seating_plan(self):
return range(1, 56), "ABCDEFGHJK"
只是擺脫有限的信息-
c,d = make_flights()
這是未定義的原因是因為這是 class 中的一個方法。 您首先需要設置一個航班 object,然后在其上調用該方法 - 作為一個粗略的示例
myflight = Flight(number,aircraft)
c,d = myflight.make_flights()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.