【发布时间】:2021-06-05 00:35:30
【问题描述】:
我正在为班级的期末考试编写程序,但在更新已创建的库存时遇到了一些麻烦。我已经能够做到这一点,我可以在代码中执行所有其他操作,但是当我运行更新部分时,没有任何更新。对于这方面的任何帮助,我将不胜感激。我的所有代码都包含在下面
class Automobile:
def __init__(self, make, model, year, color, mileage=0):
self._make = make
self._model = model
self._year = year
self._color = color
self._mileage = mileage
@classmethod
def make_vehicle(cls):
make = input('Enter vehicle make: ')
model = input('Enter vehicle model: ')
while True:
year = input('Enter vehicle year: ')
try:
year = int(year)
break
except ValueError:
print("Year must be a number", file=sys.stderr)
color = input('Enter vehicle color: ')
while True:
mileage = input('Enter vehicle mileage: ')
try:
mileage = int(mileage)
break
except ValueError:
print("Mileage must be an integer", file=sys.stderr)
return cls(make, model, year, color, mileage)
def add_Vehicle(self):
vehicle = Automobile.make_vehicle()
self.vehicles.append(vehicle)
def __str__(self):
return '\t'.join(str(x) for x in [self._make, self._model, self._year, self._color, self._mileage])
class Inventory:
def __init__(self):
self.vehicles = []
def add_vehicle(self):
vehicle = Automobile.make_vehicle()
self.vehicles.append(vehicle)
def viewInventory(self):
print('\t'.join(['','Make', 'Model','Year', 'Color', 'Mileage']))
for idx, vehicle in enumerate(self.vehicles) :
print(idx + 1, end='\t')
print(vehicle)
print("This is the Vehicle Inventory Program.")
inventory = Inventory()
while True:
print ("""
1.Add a Vehicle
2.Delete a Vehicle
3.View Inventory
4.Update Inventory
5.Export Inventory
6.Quit
""")
ans=input("What would you like to do? ")
if ans=="1":
#add a vehicle
inventory.add_vehicle()
elif ans=='2':
#delete a vehicle
if len(inventory.vehicles) < 1:
print('Sorry there are no vehicles currently in inventory')
continue
inventory.viewInventory()
item = int(input('Please enter the number associated with the vehicle to be removed: '))
if item - 1 > len(inventory.vehicles):
print('This is an invalid number')
else:
inventory.vehicles.remove(inventory.vehicles[item - 1])
print ()
print('This vehicle has been removed')
elif ans == '3':
#list all the vehicles
if len(inventory.vehicles) < 1:
print('Sorry there are no vehicles currently in inventory')
continue
inventory.viewInventory()
elif ans == '4':
#edit vehicle
if len(inventory.vehicles) < 1:
print('Sorry there are no vehicles currently in inventory')
continue
inventory.viewInventory()
item = int(input('Please enter the number associated with the vehicle to be updated: '))
if item - 1 > len(inventory.vehicles):
print('This is an invalid number')
else:
if Inventory().add_vehicle() == True :
inventory.vehicles.remove(inventory.vehicles[item - 1])
inventory.vehicles.insert(item - 1, Automobile)
print('This vehicle has been updated')
elif ans == '5':
#export inventory to file
if len(inventory.vehicles) < 1:
print('Sorry there are no vehicles currently in inventory')
continue
f = open('vehicle_inventory.txt', 'w')
f.write('\t'.join(['Make', 'Model','Year', 'Color', 'Mileage']))
f.write('\n')
for vechicle in inventory.vehicles:
f.write('%s\n' %vechicle)
f.close()
print('The vehicle inventory has been exported to a file')
elif ans == '6':
#exit the loop
print('Thank you for utilizing the Vehicle Inventory Program. Have a nice day.')
break
else:
print('invalid')
【问题讨论】:
-
if Inventory().add_vehicle() == True :这不是指原始的inventory它正在创建一个新的库存。在任何情况下add_vehicle()都不会返回任何东西,所以它永远不会等于 True。 (而== True是多余的)。 -
有很多方法可以改进此代码。但我想当你得到一个分数时你会发现这一点。或者在 CodeReview 中发布。
-
@blueteeth 对于包含已知损坏代码的问题,请不要推荐代码审查:在修复之前它是not ready for review。
标签: python-3.x inventory