這是我得到的錯誤:
發生例外: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()
uj5u.com熱心網友回復:
歡迎使用 StackOverflow!
這個例外背后的原因是因為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 >)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/365746.html
上一篇:Python-基于部分字串列印行
