使用用户输入构建决策树来订购商品



我正在尝试编写一个决策树,以允许客户根据他们的输入订购商品。到目前为止,我已经设计了一个嵌套的if-elif条件结构来决定客户是否要订购 ->什么订单类别--?该类别中的什么产品 --> 什么尺寸 --> 什么数量

下面是一个结构示例,如果我继续该过程,它将变得更加嵌套。我的问题是,这是否可以通过决策树数据结构来实现,例如收集用户输入的字典,并使用递归算法来打印订单。如果是这样,这将如何编码?

eatOrNo = input("Type yes to eat or no to cancel")
if eatOrNo == 'yes':
category = input('Type Hot Drink or Cold Drink or Food')
if category == 'Hot Drink':
hotDrink = input("Espresso or Cappucino")
elif category == 'Cold Drink':
coldDrink = input("Iced Coffee or Iced Tea")
elif category == 'Food':
coldDrink = input("Toast or Sandwich")
else:
print('error')
elif eatOrNo == 'no':
print('cancelled')
else:
print('error')

这是一个示例:

>>> dict = {"first":"1", "second":"2"}
>>> dict
{'first': '1', 'second': '2'}
>>> dict["first"] = 2
>>> dict
{'first': 2, 'second': '2'}

如果要将输入添加为键,可以:

>>> dict["third"] = "3"
>>> dict
{'first': 2, 'second': '2', 'third': '3'}

Idk,如果这是你想要的,但应该给你一个想法: 此外,您在 else 之后有一个elif,在您的主 if/else 中有一个重复的 else

empty_dict = {}
eatOrNo = input("Type yes to eat or no to cancel")
if eatOrNo == 'yes':
empty_dict["eatOrno"] = "yes"
category = input('Type Hot Drink or Cold Drink or Food')
if category == 'Hot Drink':
empty_dict["category"] = 'Hot Drink'
hotDrink = input("Espresso or Cappucino")
empty_dict["Food"] = coldDrink
elif category == 'Cold Drink':
empty_dict["category"] = 'Cold Drink'
coldDrink = input("Iced Coffee or Iced Tea")
empty_dict["Food"] = coldDrink
elif category == 'Food':
empty_dict["category"] = 'Food'
coldDrink = input("Toast or Sandwich")
empty_dict["Food"] = coldDrink
elif eatOrNo == 'no':
print('cancelled')
else:
print('error')

print(empty_dict)

您可以使用字典编写复杂的决策树,如 netwave 之前提到的

cold_drinks = {"iced_coffe":"cold_drink1", "iced_tea":"cold_drink2"}
hot_drinks  = {"capuccino":"hot_drink1", "expresso":"hot_drink2"}
food = {"ham":"food1", "pizza":"food2"}
eatOrNo = input("type yes to eat no to cancel")
if eatOrNo.lower()  in ("yes",'y'):
category = input('Type Hot Drink, Cold Drink or Food')
if category.lower() in ("hot drink", "hot"):
category = input("Enter the drink you want")
if category in hot_drinks:
...#keep your nest behavior as you want
else:
print("We do not have that on menu yet!")
elif category.lowercase() in ("cold drink", "cold"):
... #repeat the same as in hot drink
elif category.lowercase() == "food":
...
elif eatOrNo == 'no':
print('cancelled')
else:
print("error")

你应该看看字符串方法,这里有两个python 3的链接,其中包含python 3中的字符串方法的一些教程和示例


Quackit.com 教程点

最新更新