+= 不支持的操作数类型:'int' 和 'datetime.timedelta'
Unsupported operand type(s) for +=: 'int' and 'datetime.timedelta'
这是我得到的错误:
发生异常:TypeError
+= 不支持的操作数类型:'int' 和 'datetime.timedelta'
我搜索过其他有类似问题的人,但找不到与我的问题完全相似的内容。我以前也没有遇到过这个问题。
我要计算总飞行时间
问题出现在这行代码:
def get_total_flight_time(self):
total_flight_time = 0
for f in self.flights:
total_flight_time += f.get_flight_time()
return total_flight_time
这是我剩下的代码供参考
from datetime import datetime
class Flight(object):
def __init__(self, new_flight_number, new_departure_time, new_arrival_time):
self.flight_number = None
self.departure_time = None
self.arrival_time = None
self.flight_number = str(new_flight_number)
self.departure_time = new_departure_time
self.arrival_time = new_arrival_time
def get_flight_number(self):
return self.flight_number
def get_departure_time(self):
return self.departure_time
def set_departure_time(self, new_departure_time):
self.departure_time = new_departure_time
def get_arrival_time(self):
return self.arrival_time
def set_arrival_time(self, new_arrival_time):
self.arrival_time = new_arrival_time
def get_flight_time(self):
return (self.arrival_time - self.departure_time )
class Itinerary(object):
def __init__(self, new_flights):
self.flights = None
self.flights = new_flights
def get_total_travel_time(self):
total_travel_time = 0
if len(self.flights) > 0:
first_flight_departure = self.flights[0].get_departure_time()
last_flight_arrival = self.flights[len(self.flights) - 1].get_arrival_time()
total_travel_time = (last_flight_arrival - first_flight_departure )
return total_travel_time
def get_total_flight_time(self):
total_flight_time = 0
for f in self.flights:
total_flight_time += f.get_flight_time()
return total_flight_time
def main():
flights = []
flights.append(
Flight("US230", datetime(2014, 4, 5, 5, 5, 0),
datetime(2014, 4, 5, 6, 15, 0))
)
flights.append(
Flight("US235", datetime(2014, 4, 5, 6, 55, 0),
datetime(2014, 4, 5, 7, 45, 0))
)
flights.append(
Flight("US237", datetime(2014, 4, 5, 9, 35, 0),
datetime(2014, 4, 5, 12, 55, 0))
)
itinerary = Itinerary(flights)
print("Total Travel time: ", itinerary.get_total_travel_time())
print("Total Flight time: ", itinerary.get_total_flight_time())
main()
欢迎使用 Whosebug!
这个异常背后的原因是因为 total_flight_time
(int
) 和 f.get_flight_time()
(returns a timedelta
) 是两种不同的类型,Python 不知道如何将 +
操作数应用于它们。为了解决这个问题,您需要在添加它们之前确保它们是同一类型,即 int
或 datetime.timedelta
。看起来你需要这个数字是一个 timedelta
对象,所以为了创建一个值为 0 的对象,使用 timedelta(seconds=0)
,并将这个值赋给 total_flight_time
。如果你只想使用 int
,你可以使用 int(f.get_flight_time().total_seconds())
,然后如果你需要将其转换为时间增量,你可以使用 timedelta(seconds=
< total seconds >)
这是我得到的错误:
发生异常:TypeError += 不支持的操作数类型:'int' 和 'datetime.timedelta'
我搜索过其他有类似问题的人,但找不到与我的问题完全相似的内容。我以前也没有遇到过这个问题。
我要计算总飞行时间
问题出现在这行代码:
def get_total_flight_time(self):
total_flight_time = 0
for f in self.flights:
total_flight_time += f.get_flight_time()
return total_flight_time
这是我剩下的代码供参考
from datetime import datetime
class Flight(object):
def __init__(self, new_flight_number, new_departure_time, new_arrival_time):
self.flight_number = None
self.departure_time = None
self.arrival_time = None
self.flight_number = str(new_flight_number)
self.departure_time = new_departure_time
self.arrival_time = new_arrival_time
def get_flight_number(self):
return self.flight_number
def get_departure_time(self):
return self.departure_time
def set_departure_time(self, new_departure_time):
self.departure_time = new_departure_time
def get_arrival_time(self):
return self.arrival_time
def set_arrival_time(self, new_arrival_time):
self.arrival_time = new_arrival_time
def get_flight_time(self):
return (self.arrival_time - self.departure_time )
class Itinerary(object):
def __init__(self, new_flights):
self.flights = None
self.flights = new_flights
def get_total_travel_time(self):
total_travel_time = 0
if len(self.flights) > 0:
first_flight_departure = self.flights[0].get_departure_time()
last_flight_arrival = self.flights[len(self.flights) - 1].get_arrival_time()
total_travel_time = (last_flight_arrival - first_flight_departure )
return total_travel_time
def get_total_flight_time(self):
total_flight_time = 0
for f in self.flights:
total_flight_time += f.get_flight_time()
return total_flight_time
def main():
flights = []
flights.append(
Flight("US230", datetime(2014, 4, 5, 5, 5, 0),
datetime(2014, 4, 5, 6, 15, 0))
)
flights.append(
Flight("US235", datetime(2014, 4, 5, 6, 55, 0),
datetime(2014, 4, 5, 7, 45, 0))
)
flights.append(
Flight("US237", datetime(2014, 4, 5, 9, 35, 0),
datetime(2014, 4, 5, 12, 55, 0))
)
itinerary = Itinerary(flights)
print("Total Travel time: ", itinerary.get_total_travel_time())
print("Total Flight time: ", itinerary.get_total_flight_time())
main()
欢迎使用 Whosebug!
这个异常背后的原因是因为 total_flight_time
(int
) 和 f.get_flight_time()
(returns a timedelta
) 是两种不同的类型,Python 不知道如何将 +
操作数应用于它们。为了解决这个问题,您需要在添加它们之前确保它们是同一类型,即 int
或 datetime.timedelta
。看起来你需要这个数字是一个 timedelta
对象,所以为了创建一个值为 0 的对象,使用 timedelta(seconds=0)
,并将这个值赋给 total_flight_time
。如果你只想使用 int
,你可以使用 int(f.get_flight_time().total_seconds())
,然后如果你需要将其转换为时间增量,你可以使用 timedelta(seconds=
< total seconds >)