名称:水果超市
第一个类:水果
属性:名称,价格,数量
第二个类:商店
可以用列表或者字典
*******xx超市欢迎您*******
1.查看所有水果信息
2.增加水果信息
3.删除水果信息
4.更改水果价格或数量
5.查找水果信息
6.排序(价格、数量)
7.退出系统
*************************
第一种方法(商店用列表存水果):
class Fruit:
def __init__(self, name, price, count):
self.name = name
self.price = float(price)
self.count = int(count)
def __str__(self):
return f"名称: {self.name:}, 价格: {self.price}, 数量: {self.count}"
class Shop:
def __init__(self, initial_data=None):
self.fruits = []
if initial_data:
for fruit_data in initial_data:
self.add_fruit(*fruit_data)
def display_fruits(self):
if not self.fruits:
print("没有水果")
return
for fruit in self.fruits:
print(fruit)
def add_fruit(self, name, price, count):
new_fruit = Fruit(name, price, count)
self.fruits.append(new_fruit)
print(f"{name} 添加成功")
def remove_fruit(self, name):
for fruit in self.fruits:
if fruit.name == name:
self.fruits.remove(fruit)
print(f"{name} 移除成功")
return
print(f"{name} 没有找到")
def update_fruit(self, name, price=None, count=None):
for fruit in self.fruits:
if fruit.name == name:
if price is not None:
fruit.price = float(price)
if count is not None:
fruit.count = int(count)
print('已更新')
return
print(f"{name} 没有找到")
def find_fruit(self, name):
for fruit in self.fruits:
if fruit.name == name:
print(fruit)
return
print(f"{name} 没有找到")
def sort_fruit(self, sort_par):
if sort_par == '1':
self.fruits = sorted(self.fruits, key=lambda fruit: fruit.price)
for fruit in self.fruits:
print(fruit)
print('已按照价格升序')
elif sort_par == '2':
self.fruits = sorted(self.fruits, key=lambda fruit: fruit.count)
for fruit in self.fruits:
print(fruit)
print('已按照数量升序')
def main():
initial_data = [
('苹果', 5, 9),
('香蕉', 3, 15),
('樱桃', 8, 30),
('西瓜', 1, 5),
('梨', 4, 25)
]
fu = Shop(initial_data)
print("\n*******三晴超市欢迎您*******")
print("1.查看所有水果信息")
print("2.增加水果信息")
print("3.删除水果信息")
print("4.更改水果价格或数量")
print("5.查找水果信息")
print("6.排序(价格、数量)")
print("7.退出系统")
print("*************************")
while True:
option = input("选择功能: ").strip().lower()
if option == "1":
fu.display_fruits()
elif option == "2":
name, price, count = map(str, input('格式:名称 价格 数量\n输入: ').split())
fu.add_fruit(name, price, count)
elif option == "3":
name = input("输入水果名称来移除: ").strip()
fu.remove_fruit(name)
elif option == "4":
user_input = input('格式:名称 [价格] 数量\n输入: ').split()
name = user_input[0]
# 检查输入长度,决定如何解析
if len(user_input) == 2: # 只更新数量
count = user_input[1]
fu.update_fruit(name, count=count)
elif len(user_input) == 3: # 更新价格和数量
price = user_input[1]
count = user_input[2]
fu.update_fruit(name, price=price, count=count)
else:
print("输入格式不正确,请输入:名称 [价格] 数量")
elif option == "5":
name = input("输入水果名称来查找: ").strip()
fu.find_fruit(name)
elif option == "6":
sort_par = input('输入排序方式\n1.价格,2.数量: ').strip()
fu.sort_fruit(sort_par)
elif option == "7":
print("退出程序")
break
else:
print("无此功能,请重新选择功能")
if __name__ == "__main__":
main()
2、第二种方法(商店用字典存水果)
class Fruit:
def __init__(self,name,price,count): #构造方法
self.name = name
self.price = price
self.count = count
def __str__(self):
return "名称:" + self.name + "价格:" + str(self.price) + "数量:" + str(self.count)
class Shop(Fruit):
def __init__(self): #初始化 (具体的水果)
self.fruits = {'apple':Fruit("apple",10,100),'banana':Fruit("banana",5,15),"orange":Fruit("orange",8,10)}
def add_fruit(self,name,price,count): #增加
fruit = Fruit(name,price,count)
self.fruits[name] = fruit
def remove_fruit(self,name): #删除
if name in self.fruits:
del self.fruits[name] # {'apple':Fruit("apple",10,100),'banana':Fruit("banana",5,15),"orange":Fruit("orange",8,10)}
else:
print(f'{name} not found in shop.')
def update_fruit(self,name,price=None,count=None): #更新
if name in self.fruits:
fruit = self.fruits[name]
if price is not None:
fruit.price = price
if count is not None:
fruit.count = count
else:
print(f'{name} not found in shop.')
def printinfo(self): #打印
for fruit in self.fruits.values():
print(f"Fruit:{fruit.name}, Price:{fruit.price},Count:{fruit.count}")
def find_fruit(self,name): #查找
for fruit in self.fruits.values():
if fruit.name == name:
print(f"Fruit:{fruit.name}, Price:{fruit.price},Count:{fruit.count}")
return
print(f'{name} not found in shop.')
#价格排序
def sort_fruits_by_price(self):
sorted_fruits = sorted(self.fruits.values(), key=lambda x:x.price)
#打印
for fruit in sorted_fruits:
print(f"Fruit:{fruit.name}, Price:{fruit.price},Count:{fruit.count}")
#数量排序
def sort_fruits_by_count(self):
sorted_fruits = sorted(self.fruits.values(), key=lambda x:x.count)
for fruit in sorted_fruits:
print(f"Fruit:{fruit.name}, Price:{fruit.price},Count:{fruit.count}")
def main():
shop = Shop()
print("以下为功能菜单:")
flag = 0
print("***************宗霖超市欢迎您********************")
print("1.查看所有的水果信息")
print("2.增加水果信息")
print("3.删除水果信息")
print("4.更改水果的价格或数量")
print("5.查找水果信息")
print("6.排序(价格/数量),价格按照选项1,数量按照选项2")
print("7.退出系统")
print("*************************************************")
while True:
i = int(input("请输入选项:"))
if i == 1:
shop.printinfo()
elif i ==2:
name = input("请输入名称:")
price = int(input("请输入价格:"))
count = int(input("请输入数量:"))
shop.add_fruit(name,price,count)
elif i == 3:
name = input("请输入待删除的水果的名称")
shop.remove_fruit(name)
elif i == 4:
name = input("请输入待更改的水果信息")
price = int(input("请输入价格:"))
count = int(input("请输入数量:"))
shop.update_fruit(name,price,count)
elif i == 5:
name = input("请输入水果的名称:")
shop.find_fruit(name)
elif i == 6:
# shop.sort_fruits_by_price()
# shop.sort_fruits_by_count()
flagSort = int(input("请输入排序方式:价格输入1,数量输入2"))
if flagSort == 1:
pass
else:
pass
elif i == 7:
print("=================欢迎下次光临======================")
break
else:
print("选项错误,请重新选择!")
main()