我正在编写一个接受客户下订单的函数,该函数应检查菜单中是否存在所请求的项目,我正在将该订单传递给可变参数,因为每个菜单都会有所不同,所以我该如何检查菜单中是否提供了所需的菜肴?
menu = ('Veg Roll', 'Noodles', 'Fried Rice', 'Soup')
def place_order(*item_tuple):
if item_tuple in menu:
print("Available")
else
print("Item not Available")
place_order("Veg Roll","Noodles")
Sample Input:("Veg Roll","Noodles")
Sample Output:Available Available
答案 0 :(得分:0)
您只需要做
def place_order(*item_tuple):
for item in item_tuple:
if item in menu:
print("Available")
else:
print("Item not Available")
如果您担心可用打印之间的间隔,可以将行更改为print("Available", end=" ")
答案 1 :(得分:0)
您已经定义了一个好奇的API。
最好定义def place_order(items)
,不要使用*
星号,
并要求调用者提供一个元组:
place_order(('Veg Roll', 'Noodles'))
您要独立测试每个项目:
def item_available(item):
return item in menu
def items_available(items):
return all(map(item_available, items))
def place_order(items):
if not items_available(items):
print("At least one item is not ", end="")
print("Available")
此外,如果菜单变大
那么使用set
而不是tuple
对其建模会更快。
答案 2 :(得分:0)
您只需要遍历列表中的项目即可。
def place_order(*item_tuple):
for i in item_tuple:
if item_tuple in menu:
print("Available")
else
print("Item not Available")
甚至更多pythonic
def place_order(*item_tuple):
[print(f"{'Available' if i in menu else 'Item not available'}") for i in item_tuple]