I wrote this code in Visual Studio Code and run this in the Terminal, and I'm able to input one entry for the list, after I input the first entry, it displays the data but it won't let me input more than one entry at a time without having to run the file in the Terminal again to input another entry. I'm trying to print the three entries once, altogether, after I input the three entries. Any advice/tips/tricks?
# This imports the sys module.
import sys
# This Retail Item class holds data about products.
class RetailItem:
# __init__ method initializes the attributes.
def __init__(self, description, units, price):
self.__item_description = description
self.__units_in_inventory = units
self.__price = price
# The set_item_description method gets the item type.
def set_item_description(self, description):
self.__item_description = description
# The set_units_in_inventory method gets number of items available.
def set_units_in_inventory(self, units):
self.__units_in_inventory = units
# The set_price method gets the cost of item.
def set_price(self, price):
self.__price = price
# The get_item_description method returns the item type.
def get_item_description(self):
return self.__item_description
# The get_units_in_inventory returns the number of items available.
def get_units_in_inventory(self):
return self.__units_in_inventory
# The get_price method returns the cost of item.
def get_price(self):
return self.__price
# This is the main function, it gets a list of Retail Items, and then displays them.
def main():
inventory = make_list()
print('Here is the Retail Item list you entered: ')
display_list(inventory)
# The make_list will get data for three items. It will
#return a list of available items.
def make_list():
# Create an empty list.
item_list = []
# Add three item to the list.
print('Enter data for three items: ')
for count in range(1, 4):
# Get item data.
print('Item number ' str(count) ':')
item = input('Enter description of item: ')
units = float(input('Enter number of units in inventory: '))
price = float(input('Enter price per item: '))
print()
# Creat new RetailItem and assign items variable.
items = RetailItem(item, units, price)
# Add items to list.
item_list.append(items)
return item_list
# This display_list function displays the items.
def display_list(item_list):
for item in item_list:
print(item.get_item_description())
print(item.get_units_in_inventory())
print(item.get_price())
print()
# This calls the main function.
main()
CodePudding user response:
The line return item_list
should be outside the for loop. Refer the below code:
def make_list():
# Create an empty list.
item_list = []
# Add three item to the list.
print('Enter data for three items: ')
for count in range(1, 4):
# Get item data.
print('Item number ' str(count) ':')
item = input('Enter description of item: ')
units = float(input('Enter number of units in inventory: '))
price = float(input('Enter price per item: '))
print()
# Creat new RetailItem and assign items variable.
items = RetailItem(item, units, price)
# Add items to list.
item_list.append(items)
return item_list